mybatis-plus封装的方法使用

如何使用分页?

可以在controller 层或者在 serviceimpl调用 只需要调用 page.setRecords 就可以把数据分页 (强烈建议在serviceimpl实现,有些写在controller会无法分页)
对应的service

Page<User> selectUserPage(Page<User> page);
对应的serviceimpl (这两个方法都是自己写的Mapper.xml sql语句,用户对应角色多对多关系 )

mapper (查询出来的是User 的pojo信息 所以被List封装,参数Page并没有用到)
sql查询语句

注:如果返回的是分页,但是想返回list 就在后面 getRecords() 返回的就是list<>了


Mybatis-plus 已封装好的方法
注释:User 为pojo
插入
一般只用到第一个 insert
更新
一般用到: 第一个 和 updateById
删除
第一个根据条件删除
deleteById 根据id删除

查询
1分页:有两个方法

2正常查询 多用 selectById 和selectList


二、带有Wrapper的都是可以增加条件的
使用规则:
增加条件只能增加where之后的 不能改变查询字段
所以group by虽然有封装的方法,但是无法使用
还有关联表查询都不能用

经常使用的条件有:
.eq( "id" , 10 ) 字段,参数 查出对应条件
.ge( "id" , 10) 字段 参数 包括10 之 的所有
.gt("id",10) 字段 参数 不包括10 之 的所有
.le( "id" , 10) 字段 参数 包括10 之 的所有
.lt("id",10) 字段 参数 不包括10 之 的所有
.in("id",值(或者集合或数组)) 和普通in方法相同
.like( "name" , "q" )
. between( "id" , 10 , 15) 字段 开始区间,结束区间 包左包右
.notbetween 不解释 了
.setSqlSelect( "age" ) 查询指定字段 (坑,必须在pojo中创建对应的构造方法)
.setSqlSelect( "name,age" ) 指定多个字段( 坑,必须在pojo中创建构造方法,并且参数顺序一致)


.where("id={0}",52) 正常应该这样写 但是为了方便 可以忽略第二个参数直接写个sql条件即可
.where( "id=52" )

.or( "id=1" )
.and( "id=1" )

不常用的
. ne( "age" , 20 ) age 20> 同时 20<
.exists()根据这个条件判断 如果为true 默认返回所有行的所有字段
.group by() 因为group 基本要和函数一起使用 所以不建议用
.having()

还有一些notlike notexists 等很好理解的就没放上去


可以进行一些稍复杂一点的逻辑
如:
查询id字段或者age字段包括1的
.like( "id" , "1" ).or().like( "age" , "1" )

最后是 网上的一些示例
.where("name={0}", "'zhangsan'").and("id=1") .orNew("status={0}", "0").or("status=1") .notLike("nlike", "notvalue") .andNew("new=xx").like("hhh", "ddd") .andNew("pwd=11").isNotNull("n1,n2").isNull("n3") .groupBy("x1").groupBy("x2,x3") .having("x1=11").having("x3=433") .orderBy("dd").orderBy("d1,d2");



猜你喜欢

转载自blog.csdn.net/Wuhaotian1996/article/details/80610666