做网站版权所有怎么写,企业建站公司排名为什么不好做,昆山 网站设计,岳阳优化公司目录 前言1. Mybatis2. MybatisPlus3. 实战 前言
更多的知识点推荐阅读#xff1a;
【Java项目】实战CRUD的功能整理#xff08;持续更新#xff09;java框架 零基础从入门到精通的学习路线 附开源项目面经等#xff08;超全#xff09;
本章节主要以Demo为例#xff… 目录 前言1. Mybatis2. MybatisPlus3. 实战 前言
更多的知识点推荐阅读
【Java项目】实战CRUD的功能整理持续更新java框架 零基础从入门到精通的学习路线 附开源项目面经等超全
本章节主要以Demo为例直奔主题对于更多的基本知识可看我的框架架构
1. Mybatis
主要的逻辑从外往深走具体如下
创建一个Java类实现业务逻辑在该类中调用上述接口中的方法获取分页数据并构建PageResult对象返回创建一个Java接口声明两个方法分别用于执行这两个查询语句创建XML映射文件定义两个查询语句分别用于获取分页列表和总记录数
主体代码如下
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.system.mapper.UserMapperselect idfetchCustomPageResultsresultTypecom.example.system.model.UserModel SELECT * FROM userswhereif testcriteria.name ! null and criteria.name !AND name LIKE CONCAT(%,#{criteria.name},%)/ifif testcriteria.createTime ! nullAND create_time BETWEEN #{criteria.createTime[0]}, #{criteria.createTime[1]},/ifif testcriteria.status ! nullAND status #{criteria.status}/if/whereORDER BY id DESCLIMIT #{criteria.pageNumber}, #{criteria.pageSize}/selectselect idfetchCustomTotalCount resultTypeLong SELECT COUNT(1) FROM userswhereif testcriteria.name ! null and criteria.name !AND name LIKE CONCAT(%,#{criteria.name},%)/ifif testcriteria.createTime ! nullAND create_time BETWEEN #{criteria.createTime[0]}, #{criteria.createTime[1]},/ifif testcriteria.status ! nullAND status #{criteria.status}/if/where/select/mapperMapper
public interface CustomUserMapper extends BaseMapperXUserModel {/*** 获取自定义分页结果*/ListUserModel fetchCustomPageResults(Param(criteria) UserCriteria criteria);/*** 获取自定义总记录数*/Long fetchCustomTotalCount(Param(criteria) UserCriteria criteria);}Service
Slf4j
public class CustomUserService {Overridepublic PageResultUserModel fetchCustomUserPage(UserCriteria criteria) {return new PageResult(userMapper.fetchCustomPageResults(criteria),userMapper.fetchCustomTotalCount(criteria));}
}对应实现类如下
Service
Slf4j
public class CustomUserServiceImpl implements CustomUserService{private final CustomUserMapper userMapper;Autowiredpublic CustomUserService(CustomUserMapper userMapper) {this.userMapper userMapper;}Overridepublic PageResultUserModel fetchCustomUserPage(UserCriteria criteria) {return new PageResult(userMapper.fetchCustomPageResults(criteria),userMapper.fetchCustomTotalCount(criteria));}
}以上的Demo提供一个框架思路
2. MybatisPlus
具体代码如下
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.system.mapper.AdminUserMapperselect idfetchCustomPageResultsresultTypecom.example.system.model.UserModel SELECT * FROM userswhereif testcriteria.name ! null and criteria.name !AND username LIKE CONCAT(%,#{criteria.name},%)/ifif testcriteria.createTime ! nullAND create_time BETWEEN #{criteria.createTime[0]}, #{criteria.createTime[1]},/ifif testcriteria.status ! nullAND status #{criteria.status}/if/whereORDER BY id DESC/select/mapperMapper
public interface CustomAdminUserMapper extends BaseMapperXUserModel {IPageUserModel fetchCustomPageResults(IPageUserModel page, Param(criteria) UserCriteria criteria);}其实现类如下
Service
Slf4j
public class CustomUserServiceImpl implements CustomUserService{private final CustomAdminUserMapper userMapper;Autowiredpublic CustomAdminUserService(CustomAdminUserMapper userMapper) {this.userMapper userMapper;}Overridepublic PageResultUserModel fetchCustomUserPage(UserCriteria criteria) {// 必须使用 MyBatis Plus 的分页对象IPageUserModel page new Page(criteria.getPageNo(), criteria.getPageSize());userMapper.fetchCustomPageResults(page, criteria);return new PageResult(page.getRecords(), page.getTotal());}
}3. 实战
看Demo示例可能有些抽象结合自身项目给一个示例
Controller类如下
GetMapping(/listByOrderId)
ApiOperationSupport(order 8)
ApiOperation(value 分页, notes 传入docheck)
public RListDoCheckVO list(Long orderId) {ListDoCheck doChecks docheckService.listByOrderId(orderId);return R.data(DocheckWrapper.build().listVO(doChecks));
}对应的Service类如下
ListDoCheck listByOrderId(Long orderId);其中的实现类如下
Override
public ListDoCheck listByOrderId(Long orderId) {return docheckMapper.listByOrderId(orderId);
}Mapper类如下
ListDoCheck listByOrderId(Long orderId);对应的Xml代码如下
select idlistByOrderId resultTypeorg.springblade.equipment.entity.DoCheckselect * from equipment_check_order_docheck where is_deleted 0 and check_order_id#{orderId}
/select其中xml的上文如下