恩施市网站建设,军队采购网,广州公关公司排行榜,淄博网站建设hiddd仓库地址 在初版代码中#xff0c;已经实现了基础的增删改查。 但是#xff0c;逻辑处理都放在Controller层中并没有分为Service层#xff0c;所以#xff0c;代码升级时候必须补充上去。
代码结构
升级后的代码结构有所变化。
--common 公共插件
--controller…仓库地址 在初版代码中已经实现了基础的增删改查。 但是逻辑处理都放在Controller层中并没有分为Service层所以代码升级时候必须补充上去。
代码结构
升级后的代码结构有所变化。
--common 公共插件
--controller 控制层
--dao 就是原来的mapper层代码不变
--entity 数据模型层
--service 逻辑处理层--impl 逻辑处理实现层dao层
即为原来的mapper层。 一个新发现对于数据的处理逻辑如果需要执行sql语句则需要在mapper层创建方法以便后续调用
package com.example.drhtspringboot.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.drhtspringboot.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
/*** 用户表* author Administrator*/
Mapper
public interface UserMapper extends BaseMapperUser {Select(select * from user where username#{username})User getUserInfoList(String username);
}service层和impl层
由于处理逻辑的方法众多service层的角色是汇总收集以便更清楚的显示有多少种方法而impl层则负责具体的方法的实现
Service层代码
还记得UserController中有多少方法吗一共有5个 ● getList 根据条件分页获取用户列表 ● getListAll 获取所有用户信息 ● addUser 添加用户 ● delUser 删除用户 ● updateUser 更新用户 ● getUserById(新增) 根据Id获取用户信息
文件创建
● 创建service文件夹 ● 在service文件夹下创建UserService接口 ● 在service文件夹下创建impl文件夹 ● 在impl文件夹下创建UserImpl类
service代码
代码实现
package com.example.drhtspringboot.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.example.drhtspringboot.entity.User;import java.util.List;public interface UserService extends IServiceUser {// 创建用户public void addUser(User user);// 删除用户public void deleteUser(User user);// 更新用户public void updateUser(User user);// 实验方法返回值用public ListUser getUserInfoList();
}解释说明
● 基础service继承 智能推荐最开始推荐的是BaseService但是问了后端师父说不对该是用IService。 ● 方法实现 Service和Impl的本质还是在mapper的基础上增加方法我的理解是有点像前端Js的原型挂载方法(具体不纠结意思大概是这样)所以有些本身就具有的方法不用实现。
impl层代码
代码实现
package com.example.drhtspringboot.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.drhtspringboot.dao.UserMapper;
import com.example.drhtspringboot.entity.User;
import com.example.drhtspringboot.service.UserService;import javax.annotation.Resource;
import java.util.Date;
import java.util.List;public class UserImpl extends ServiceImplUserMapper, User implements UserService {Resourceprivate UserMapper userMapper;public void addUser(User user) {user.setCreatedAt(new Date());user.setUpdatedAt(new Date());userMapper.insert(user);}public void deleteUser(User user) {userMapper.deleteById(user.getId());}public void updateUser(User user) {user.setUpdatedAt(new Date());userMapper.updateById(user);}Overridepublic ListUser getUserInfoList() {ListUser userList userMapper.selectList(new QueryWrapper());return userList;}
}解释说明
extends ServiceImplUserMapper, User implements UserService 这一句的具体意义没深究个人理解就是impl类和sevice的一个关联关系表示Resource 注解 也是依赖注入Override 注解 表示这是一个重写方法
重点说明
queryWrapper对象的传递 在service的本身方法里是可以直接传递qw对象的但是在impl层实现的方法不能传递qw对象需要在实现方法内部自行创建方法返回值 没有返回的方法如创建、更新、删除等方法的返回值类型用void即可 但是有返回值的方法如查询列表(getUserInfoList)查询详情这种方法的返回值类型就必须和内部的数据类型保持一致
controller
使用service后controller中的代码也需要修改
RequestMapping(getList)
public Result? getList(Integer page,Integer size,String username,Integer banjiId,Integer gender,Integer role){// 创建Page对象用于分页查询PageUser userPage new Page(page,size);// 创建QueryWrapper对象用于构建查询条件QueryWrapperUser qw new QueryWrapper();if(StringUtils.isNotBlank(username)) {qw.like(username,username); // 模糊查询用户名}if(banjiId ! null) {qw.eq(banjiId,banjiId); // 精确查询性别}if(gender ! null) {qw.eq(gender,gender); // 精确查询性别}if(role ! null) {qw.eq(role, role); // 精确查询角色}// 执行分页查询PageUser userPageList userService.page(userPage,qw);// 判断查询结果是否为空if(userPageList ! null) {return Result.success(userPageList); // 查询成功返回结果} else {return Result.error(500, 查询失败); // 查询失败返回错误信息}
}
RequestMapping(getListAll)
public Result? getListAll(){// 使用 QueryWrapper 进行查询获取用户列表ListUser userList userService.getUserInfoList();// 查询成功返回用户列表return Result.success(userList);
}
PostMapping(addUser)
public Result? addUser(RequestBody User user){userService.addUser(user);return Result.success();
}
PostMapping(delUser)
public Result? deleteUser(RequestBody User user){userService.deleteUser(user);// 如果删除成功返回成功结果return Result.success();
}
PostMapping(updateUser)
public Result? updateUser(RequestBody User user){userService.updateUser(user);// 如果更新成功返回成功结果return Result.success();
}