目录
一MyBatis动态拼接SQL
1:if标签
<select id="selectByMoney" resultType="User">
<include refid="user_sql"></include>
<where>
<if test="money!=null and money!=''">
and money>1000
</if>
</where>
</select>
2、where标签
<select id="selectByMoney" resultType="User">
<include refid="user_sql"></include>
<where>
<if test="money!=null and money!=''">
and money>1000
</if>
</where>
</select>
where标签的作用是可以自动处理掉第一个and
3:foreach标签
<select id="selectUserById" resultType="User">
<include refid="user_sql"></include>
<where>
<foreach collection="ids" open="and id in(" item="id" separator="," close=")">
#{id}
</foreach>
</where>
</select>
二 MyBatisPlus条件构造器
2.1使用QueryWrapper进行各种条件构造
2.1.1案例一组装条件查询
@RequestMapping("/hello15")
//查询用户名中包含a和余额在1000-9000之间的用户信息
public List<User> text15(){
QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
queryWrapper.like("user_name","a");
queryWrapper.between("money",1000,9000);
queryWrapper.eq("password","111");
List<User> list = dao.selectList(queryWrapper);
return list;
}
2.1.2、例2:组装排序条件
@RequestMapping("/hello16")
public List<User> text16(){
//根据用户余额降序排序,如果遇到相同余额的则按照id升序排序
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper
.orderByDesc("money")
.orderByAsc("id");
List<User> list = dao.selectList(queryWrapper);
return list;
}
2.1.3、例3:组装删除条件
@RequestMapping("/hello17")
public int text17(){
//删除余额为空的用户信息
QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
queryWrapper
.isNull("money");
int count = dao.delete(queryWrapper);
return count;
}
2.1.4、例4:条件的优先级
@RequestMapping("/hello18")
public int text18(){
//修改余额大于1000并且用户名等于admin或者余额为空的用户信息
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper
.gt("money",1000)
.eq("user_name","admin")
.or().isNull("money");
//通过对象set方法修改信息
User user = new User();
user.setUserName("大胖");
user.setPassword("888");
int count = dao.update(user, queryWrapper);
return count;
}
2.1.5实现子查询
@RequestMapping("/hello19")
public List<User> text19(){
//查询余额大于3等于3000的用户信息
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.inSql("id","select id from t_user where money>=3000");
List<User> list = dao.selectList(queryWrapper);
return list;
}
2.2常用的QueryWrapper查询语法总结
queryWrapper.lt() 小于
queryWrapper.le() 小于等于
queryWrapper.gt() 大于
queryWrapper.ge() 大于等于
queryWrapper.eq() 等于
queryWrapper.ne() 不等于
queryWrapper.like(“属性”,“值”) 模糊查询%值%
queryWrapper.notLike(“属性”,“值”) 模糊查询不包含%值%
queryWrapper.likeLeft(“属性”,“值”) 模糊查询%值 以什么结尾
queryWrapper.likeRight(“属性”,“值”) 模糊查询 值% 以什么开始
queryWrapper.isNull() 值为空或者为null
queryWrapper.isNotNull() 值不为空 或者为null
queryWrapper.in(“属性”,“条件”,“条件”) 符合多个条件的值
queryWrapper.notIn(“属性”,“条件”,“条件”) 不符合多个条件的值
queryWrapper.or() 或者
queryWrapper.and() 和
queryWrapper.sql(sql语句) 符合sql语句的值
queryWrapper.notSql(sql语句) 不符合SQL语句的值