这两天学习了一下mybatis plus。简单总结了一下条件构造器使用的查询方式。
官网: MyBatis-Plus
/**
* @param isDel 是否删除
*/
void userUpdate(int isDel) {
//普通查询
QueryWrapper<User> queryWrapper = new QueryWrapper<>();//条件构造器
queryWrapper.eq("isDel", 1); //方式1 直接当做条件
queryWrapper.func(user -> { //方式2 通过判断后确定使用什么条件
if (isDel != a()) {
user.eq("isDel", 1);
} else {
user.eq("isDel", 0);
}
});
queryWrapper.func(user -> { //方式3 直接当做条件
user.eq("isDel", 0);
});
if (isDel != a()) queryWrapper.eq("isDel", 1); //方式4 判断是否使用这个条件
queryWrapper.eq(isDel == a(), "isDel", 1); //方式4 简写
queryWrapper.apply("isDel=" + "1"); // 方法5 直接拼接参数
queryWrapper.apply("isDel={0}", 1); // 方法6 动态拼接防止sql注入
queryWrapper.last("isDel=" + "1"); // 方法7 无视优化规则直接拼接到 sql 的最后 只能调用一次,多次调用以最后一次为准 有sql注入的风险,请谨慎使用
queryWrapper.lambda().eq(User::getIsDel1, 1); // 方法8 获取 LambdaWrapper 使用Lambda方式
List<User> userList = userMapping.selectList(queryWrapper);
----------------------------------------------------------------------------------------------------------
// Lambda 表达式方式
User user = new User();
user.setIsDel1("1");
LambdaQueryWrapper<User> lambdaUpdateWrapper = new LambdaQueryWrapper<>();
lambdaUpdateWrapper.eq(User::getIsDel1, user.getIsDel1());// Lambda 表达式方式
lambdaUpdateWrapper.eq(User::getIsDel1, 1);// Lambda 表达式方式
userList = userMapping.selectList(queryWrapper);
----------------------------------------------------------------------------------------------------------
//查询
queryWrapper.select("id", "name", "sex");
queryWrapper.select("id", "name as name", "sex");
queryWrapper.select(i ->
i.getProperty().equals("id")
|| i.getProperty().equals("name")
|| i.getProperty().equals("sex"));
----------------------------------------------------------------------------------------------------------
//修改
UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();//条件构造器
userUpdateWrapper.eq("id", "1");//条件
userUpdateWrapper.set("isDel", "1");//修改1
userUpdateWrapper.setSql("isDel=1");//修改2
userUpdateWrapper.lambda().eq(User::getIsDel1, 1);//修改3
}