如何使用分页?
可以在controller 层或者在 serviceimpl调用 只需要调用 page.setRecords 就可以把数据分页 (强烈建议在serviceimpl实现,有些写在controller会无法分页)
对应的service
Page selectUserPage(Page 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虽然有封装的方法,但是不推荐
还有关联表查询不能用,只能是当前pojo对应的表
经常使用的条件有:
.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"
) 查询指定字段
.setSqlSelect(
"name,age"
) 指定多个字段(
.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");