MyBatis实现分页、排序、条件查询
发布时间
阅读量:
阅读量
文章目录
-
-
-
-
-
- 1、前端样式
-
- 2、定义返回结果集
- 3、MyBatis逆向工程
- 4、业务代码
- 5、Log4j的SQL
-
-
-
1、前端样式

2、定义返回结果集
import java.util.List;
public class ListResult<T> {
/** * 返回信息
*/
private String msg;
/** * 返回状态 -1表示错误 200表示成功
*/
private Integer status;
/** * 数据的总条数
*/
private Integer total;
/** * 具体返回的数据
*/
private List<T> data;
/** * get&&set方法 略
*/
public String getXxx() {...}
public void setXxx(...) {...}
}
3、MyBatis逆向工程
生成JavaBean、mapper接口、mapper配置文件
过程:略
4、业务代码
Controller层(视图层、控制层)
@GetMapping(value = "/managers")
public ListResult<Manager> mgrShow(String selKey, String selValue, Integer pagenum, Integer pagesize){
// 测试接口是否能收到数据 前端URL: http://localhost:8181/selroom/managers?selKey=name&selValue=sfasf&pagenum=1&pages
System.out.println(selKey+":"+selValue+":"+pagenum+":"+pagesize);
// 基于JWT的token校验
// 略
// 初始化 结果集
ListResult<Manager> result = new ListResult<>();
result.setStatus(-1);
// 接收 Service层的 结果集
result = managerService.findAllByPageInfo(selKey,selValue,pagenum, pagesize);
result.setStatus(200);
return result;
}
ServiceImpl.java(业务逻辑层 的实现类)
@Override
public ListResult<Manager> findAllByPageInfo(String selKey, String selValue, Integer pagenum, Integer pagesize) {
// 初始化 结果集
ListResult<Manager> result = new ListResult<>();
// SQL语句
ManagerExample example = new ManagerExample();
ManagerExample.Criteria criteria = example.createCriteria();
// 拼接动态SQL
if (!"".equals(selValue)) {
// 编号 精准匹配
if ("id".equals(selKey)) {
criteria.andIdEqualTo(Integer.valueOf(selValue));
}
// 昵称 模糊查询
if ("name".equals(selKey)) {
criteria.andNameLike("%" + selValue + "%");
}
// 身份 精准匹配 (待完成)
// 电话 精准匹配
if ("tel".equals(selKey)) {
criteria.andTelEqualTo(selValue);
}
// 状态 精准匹配 (功能是否上线 待定)
}
// 数据总条数
result.setTotal(managerMapper.countByExample(example));
// id升序 and 分页查询
example.setOrderByClause(" id asc limit " + (pagenum - 1) * pagesize + "," + pagesize);
result.setData(managerMapper.selectByExample(example));
return result;
}
5、Log4j的SQL
当selValue为空值时,
执行全表查询:
select xxx from t_xxx order by id asc limit 0,10
当selValue存在值时,
根据设定条件进行查询:
- 精确匹配:
select xxx from t_xxx WHERE (id = ?) order by id asc limit 0,10 - 近似匹配:
select xxx from t_xxx WHERE (name like ?) order by id asc limit 0,10
其中的近似匹配结果返回total_records(total条数)

全部评论 (0)
还没有任何评论哟~
