mybatis plus条件构造器关系图
介绍 :
1.上图绿色框为抽象类abstract
2.蓝色框为正常class类,可new对象
3.黄色箭头指向为父子类关系,箭头指向为父类
废话不多说,直接上示例 :
注:示例中的 Service接口 都继承了 IService 的接口
1. QueryWrapper
继承自
AbstractWrapper
,自身的内部属性entity
也用于生成 where 条件
及LambdaQueryWrapper
, 可以通过new QueryWrapper().lambda()
方法获取到
1.1 select函数
//String... sqlSelect 表示不定参数,也就是调用这个方法的时候这里可以传入多个String对象。
select(String... sqlSelect)
select(Predicate<TableFieldInfo> predicate)
select(Class<T> entityClass, Predicate<TableFieldInfo> predicate)
- 设置查询字段
过滤查询字段,入参不包含 class 的调用前需要
wrapper
内的entity
属性必须有值! 这两类方法重复调用以最后一次调用为准!
- 示例
@Test
public void test(){
QueryWrapper<Demo> queryWrapper = new QueryWrapper<>();
//需要查询出来的字段
queryWrapper.select("test1","test2");
List<Demo> list = demoMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
控制台输出
Demo(id=null, test1=1111, test2=2222, test3=null, test4=null)
Demo(id=null, test1=5555, test2=6666, test3=null, test4=null)
- 可以排除或指定要查询的字段
QueryWrapper<Demo> wrapper = new QueryWrapper<>();
//常量在前,变量再后避免空指针
wrapper.select(Demo.class,i -> !"1111".equals(i.getTest1()));
2. UpdateWrapper
继承自
AbstractWrapper
,自身的内部属性entity
也用于生成 where 条件
及LambdaUpdateWrapper
, 可以通过new UpdateWrapper().lambda()
方法获取!
2.1 set函数
//column 表字段,val 值 ,condition表示该条件是否加入最后生成的sql中
set(String column, Object val)
set(boolean condition, String column, Object val)
-
示例
UpdateWrapper<ManagerSection> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("status",status);
updateWrapper.eq("id",id);
boolean result = iProjectUnitService.update(updateWrapper);
2.2 setSql函数
setSql(String sql)
-
示例
@Test
public void test(){
UpdateWrapper<Demo> updateWrapper = new UpdateWrapper<>();
// 设置sql语句部分
updateWrapper.setSql("test3 = 18");
updateWrapper.eq("test1","1111");
userService.update(updateWrapper);
}
3. LambdaWrapper
3.1 LambdaQueryWrapper
LambdaQueryWrapper<ManagerSectionPerson> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ManagerSectionPerson::getId,id)
.between(ManagerSectionPerson::getInvalid,0,1);
List<ManagerSectionPerson > personList = this.list(queryWrapper);
3.2 LambdaUpdateWrapper
LambdaUpdateWrapper<ManagerSectionPerson> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ManagerSectionPerson::getId, id)
.le(ManagerSectionPerson::getLockStatus,30)
.set(ManagerSectionPerson::getInvalid,1)
.setSql("status = 1");
this.update(updateWrapper);
4.使用 Wrapper 自定义SQL
4.1 注解方式 Mapper.java
@Select("select * from mysql_data ${ew.customSqlSegment}")
List<MysqlData> getAll(@Param(Constants.WRAPPER) Wrapper wrapper
4.2 XML形式 Mapper.xml
<select id="getAll" resultType="MysqlData">
SELECT * FROM mysql_data ${ew.customSqlSegment}
</select>
下面图表为条件构造器使用中的各个方法格式和说明,如有不懂可参考官方文档内容
版权声明:程序员胖胖胖虎阿 发表于 2022年10月20日 下午6:56。
转载请注明:QueryWrapper、UpdateWrapper和LambdaWrapper的使用 | 胖虎的工具箱-编程导航
转载请注明:QueryWrapper、UpdateWrapper和LambdaWrapper的使用 | 胖虎的工具箱-编程导航
相关文章
暂无评论...