QueryWrapper和LambdaQueryWrapper通常用来构建select、delete、update的where条件部分;
UpdateWrapper和LambdaUpdateWrapper通常只有在set语句比较特殊才使用;
尽量使用LambdaQueryWrapper和LambdaUpdateWrapper,避免硬编码;
void testLambdaQucrywrapper(){
//1.构建查询条件
LambdaQuerywrapper<User> wrapper = new LambdaQuerywrappcrsUser>()
.select(User::getId, User::getUsername, User::getInfo, User::getBalance)
.like(User::getUsername,"ou")
.ge(User::getBalance,100);
//2.查询
List<User> users =userMapper.selectLisl(wrapper);
users.ForEach(System.out::println):}
eg:复杂的SQL 写法
<select id="queryUsers" resultType="con.itheima.mp.domain.po.User">
SELECT *
FROM tb_user
<where>
<if test="name != null">
AND username LIKE #{name}
</if>
<if test="status != null">
AND status”= #{status}
</if>
<if test="minBalance i= null and maxBalance l= null">
AND balance BETWEEN #{minBalance}AND #{maxBalance}
</if>
</where>
</select>
优化后:
public List <User> queryUsers(String name, inteper stalus, integer minalance, integer maxlialance) {
List<User> users = lambdaQuery()
.like(name != null, User::getUsername, name)
.eg(status !- null, User:;gctstatus, status)
.ge(minBalance != null,User::gelBalance, minBalance)
.le(maxBalance !- null,User::getlalancc, maxBalancc)
.list();
return users;
}
实体类
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private Boolean isMarried;
private Integer order;}
Mapper层
public interface UserMapper extends BaseMapper<User>{
}
Service层
public interface IUserService extends IService<User>{
}
ServiceImpl层
@Service
public class UserServiceImpl extends Servicelmpl<UserMapper, User> implements ISerService{