个人主页: 叶落闲庭
我的专栏:
c语言
数据结构
javaEE
操作系统
Redis
石可破也,而不可夺坚;丹可磨也,而不可夺赤。
MybatisPlus支持各种复杂的where条件,可以满足日常开发的所有需求:
BaseMapper中的方法参数可以是一个条件构造器Wrapper,通过继承关系可以看出查询的条件构造器(QueryWrapper)和修改的条件构造器(UpdateWrapper)都继承自AbstractWrapper,在AbstractWrapper中有多个方法可以使用,如eq表示等于,ge表示大于等于等等,只要在where条件中用到的都可以在AbstractWrapper中对应的方法实现。
而QueryWrapper和UpdateWrapper处理继承父类AbstractWrapper的所有功能外,还拓展了自己的功能,QueryWrapper就是在父类的基础上拓展类select的功能,同理UpdateWrapper就是拓展了更新相关的功能,即setSql方法,通过字符串的形式把set的部分写出来,然后拼到sql语句中。
还有一个构造器是在构造条件时基于Lambda的语法实现上述功能的
@Test
void testQueryWrapper() {
//1.构建查询条件
QueryWrapper<User2> wrapper = new QueryWrapper<User2>()
.select("id","username","password")
.like("username","a");
//2.查询
List<User2> user2s = user2Mapper.selectList(wrapper);
user2s.forEach(System.out::println);
}
@Test
void testUpdateByQueryWrapper() {
//要更新的数据
User2 user2 = new User2();
user2.setPassword("000");
//更新的条件
QueryWrapper<User2> wrapper = new QueryWrapper<User2>()
.eq("username","zhaoliu");
//执行更新
user2Mapper.update(user2,wrapper);
}
@Test
void testUpdateWrapper() {
UpdateWrapper<User2> wrapper = new UpdateWrapper<User2>()
.setSql("password = '111'")
.in("id",1,3,4);
//执行更新
user2Mapper.update(null,wrapper);
}
@Test
void testLambdaQueryWrapper() {
//1.构建查询条件
LambdaQueryWrapper<User2> wrapper = new LambdaQueryWrapper<User2>()
.select(User2::getId,User2::getUsername,User2::getPassword)
.like(User2::getUsername,"a");
//2.查询
List<User2> user2s = user2Mapper.selectList(wrapper);
user2s.forEach(System.out::println);
}
@Test
void testCustomSqlUpdate() {
//更新条件
String password = "333";
//执行更新
QueryWrapper<User2> wrapper = new QueryWrapper<User2>().in("id",2,5,6);
//调用自定义方法
user2Mapper.updatePwdByIds(wrapper,password);
}
void updatePwdByIds(@Param("ew") QueryWrapper<User2> wrapper,@Param("password") String password);
@Update("update tb_user2 set password = #{password} ${ew.customSqlSegment}")
void updatePwdByIds(@Param("ew") QueryWrapper<User2> wrapper,@Param("password") String password);
public interface IUserService extends IService<User2> {
}
public class UserServiceImpl extends ServiceImpl<User2Mapper,User2> implements IUserService {
}
@Test
void testSaveUser() {
User2 user = new User2();
user.setId(7);
user.setUsername("老七");
user.setPassword("777");
userService.save(user);
}
@Test
void testQuery() {
List<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(3);
ids.add(5);
List<User2> user2s = userService.listByIds(ids);
user2s.forEach(System.out::println);
}