赞
踩
1、引入MybatisPlus的起步依赖 官方提供了starter,集成了Mybatis和M'y'ba'ti's'Plus的所有功能,并且实现了自动装配效果。
2、定义Mapper
自定义的Mapper继承MybatisPlus提供的BaseMapper接口:
因为BaseMapper接口中已经定义了各种crud的方法,注意在继承过程中的泛型为实体类的类型
- public interface UserMapper extends BaseMapper<User>{
-
- }
继承之后,UserMapper.xml中的sql不用写了, 上面这个接口中的方法也不要了,直接调用BaseMapper里的方法就行 --eg 新增 userMapper.insert(user);
MyBatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。
@TableName:用来指定表名 (加到类上
@TableId:用来指定表中的主键字段信息(加到id字段上,*要么有id字段,要么用注解指出
@TableId(value="id" , type=Idtype.AUTO)
@TableField:用来指定表中的普通字段信息(加在对应字段上
需求:1、查询出名字带o的,存款大于等于1000元的id、username、info、balance字段
SELECT id,username,info,balance
FROM user
WHERE username LIKE 'o' AND balance >= 1000
QueryWrapper<User> wrapper = new QueryWrapper<User>()
.select("id","username","info","balance")
.like("username","o")
.ge("balancfe",1000);
List <User> user = userMapper.selectList(wrapper);
2、更新余额为jack的用户的余额为2000
UPDATE user
SET balance = 2000
WHERE (username="jack")
//1、要更新的数据
User user = new User();
user.setBalance(2000);
//2、更新的条件
QueryWtapper<User> wrapper = new QueryWrapper<User>.eq("name","jack");
//3、执行更新
userMapper.update(user,wrapper);
需求:更新id为1,2,4的用户的余额,扣200
UPDATE user
SET balace = balace - 200
WHERE id in (1,2,4)
List<Long> ids = List.of(1L,2L,4L);
UpdateWrapper<User> wrapper = new UpdateWrapper<User>()
.setSql("balance = balance - 200")
.in("id" , ids)
userMapper.update(null,wrapper);
我们可以利用MyBatis的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分
很多,很方便
(强调注意一下传两个泛型
学习视频 ----下述接口开发很基础的流程,讲的很好
swagger:单元测试 待学习(和Junit区别
@Api(tags = "用户管理接口" )
@RequestMapping("/users")
@RestController
@RequiredArgsConstruction // 必要的构造函数,代替@Autowired进行注入
public class UserController(){
private final IUserService userService
@ApiOpration("新增用户接口")
@PostMapping
public void saveUser(@requestBody UserFormDTO userDTO){
//1、把DTO拷贝到TO
User user = BeanUtil.copyProperties(userDTO , User.class);
//2、新增
userService.save(user);
}
@ApiOpration("删除用户接口")
@DeleteMapping("{id}")
public void deleteUserById(@ApiParam("用户id")@PathVariable("id") Long id){
userService.removeById(id);
}
@ApiOpration("根据id查询用户接口")
@GetMapping("{id}")
public UserVO queryUserById(@ApiParam("用户id")@PathVariable("id") Long id){
//1、查询用户PO
User user = userService.getById(id);
//2、把PO拷贝到VO
return BeanUtil.copyPropertise(user , UserVO.class)
}
@ApiOpration("根据id批量查询用户接口")
@GetMapping
public LIst<UserVO> queryUserById(@ApiParam("用户id集合")@RequestParam("ids") List<Long> ids){
//1、查询用户PO
List<User> users = userService.listByIds(ids);
//2、把PO拷贝到VO
return BeanUtil.copyToList(user , UserVO.class)
}
}
Controller层的接口和Iservice开发基础业务接口中的更新余额一致
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。