前言:
本文内容:RowBounds分页、使用注解开发、Mybatis执行流程剖析
推荐免费MyBatis基础教程视频:【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂_哔哩哔哩_bilibili
RowBounds分页
这种方法不建议使用,仅作了解
不适用SQL实现分页的方法
测试
UserMapper.java
1 2
| List<User> getUserRowBounds();
|
UserMapper.xml
1 2 3 4
| <select id="getUserRowBounds" resultMap="userMap"> select * from user </select>
|
MapperTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13
| @Test public void getUserByRowBounds(){ SqlSession sqlSession = MyBatisUtil.getSqlSession(); RowBounds rowBounds = new RowBounds(0,2); List<User> userList = sqlSession.selectList("com.jokerdig.mapper.UserMapper.getUserRowBounds",null,rowBounds);
for (User user : userList) { System.out.println(user); } sqlSession.close(); }
|
运行结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ...... Opening JDBC Connection Created connection 23211803. Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1622f1b] ==> Preparing: select * from user ==> Parameters: <== Columns: id, name, pwd <== Row: 1, admin, 123 <== Row: 2, abc, 123 User{id=1, username='admin', password='123'} User{id=2, username='abc', password='123'} Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1622f1b] Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1622f1b] Returned connection 23211803 to pool.
Process finished with exit code 0
|
分页插件
MyBatis 分页插件 PageHelper
使用注解开发
面向接口编程
根本原因:解耦,可拓展,提高复用,分层开发中,上层不用管具体的实现,大家都遵守共同的标准,是的开发更容易,规范性更好
使用注解
使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。
注解本质:使用反射
注解底层:动态代理
UserMapper.java
1 2 3
| @Select("select * from user") List<User> getUserList();
|
mybatis-config.xml
1 2 3 4 5 6
| .......
<mappers> <mapper class="com.jokerdig.mapper.UserMapper"/> </mappers> .......
|
MapperTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @Test public void test(){ SqlSession sqlSession = MyBatisUtil.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> userList = mapper.getUserList(); for (User user : userList) { System.out.println(user); } sqlSession.close(); }
|
Mybatis执行流程剖析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| Resources获取加载全局配置文件 | |/ 实例化SqlSessionFactoryBuilder | |/ 解析配置文件流XMLConfigBuilder | |/ Configuration所有的配置信息 | |/ sqlSessionFactory实例化 | |/ transactional事务管理 | |/ 创建executor执行器 | |/ 创建sqlSession | |/ 实现CRUD | |/ 查看是否执行成功(失败则回滚到transactional事务管理) | |/ 提交事务 | |/ 关闭sqlSession
|