Mybatis分页 (2012-09-24 21:15:35)转载▼标签: mybatisspring分页 分类: J2EE
来源:互联网 发布:php图片上传预览功能 编辑:程序博客网 时间:2024/05/01 18:19
Mybatis分页
(2012-09-24 21:15:35)mybatis
spring
分页
分类:J2EE
看方法名就应该能猜个一知半解,selectOne明显是查询并返回单个对象,selectList就是返回一个对象集合,insert就是新增一个对象,参数s是什么意思呢,其实参数s表示的sql语句id,sql语句id?也许你会问何来的sql语句id,前面不是说了mybatis核心其实是把sql语句配置到XML配置文件中,下面是一个mybatis的sql语句映射文件:
看XML的标签名就知道是干嘛的,明显是对应增删改查的,而且每个标签都有个id,我们刚才的sqlsession接口里就是通过这里的id就知道是要执行什么sql语句了.是不是很easy?
下面我以学生班级为例写个mybatis分页的例子
首先需要导入mybatis的核心jar包,以及和spring整合需要的jar包,
创建实体类Student和Class:
实体类get/set都省略了哈...
接着就是mybatis的重头戏,sql语句映射配置文件xx00Mapper.xml,代码太长我没法截图只好贴代码了。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nicolas.dao.StudentMapper">
</mapper>
可能比较难懂点就是parameterMap和resultMap配置,parameterMap主要为了解决sql语句参数太多导致dao方法入参太多,所以需要将参数都映射成javabean的属性,resultMap只要为了解决resultSet结果集到实际的javabean或者javabean集合的自动转换,再也不用我们自己遍历resultset结果集一个一个的get,然后set到我们自己的javabean里,这样原始的做法会导致一大推狗屎一般的垃圾代码,resultMap帮我们避免此类问题。
然后每个mapper都有个命名空间且该命名空间对象一个Mappper接口,该接口的方法都是此映射文件里的sql语句id值,说白了,此映射文件就是Mapper接口的具体实现,不要我们再编写MapperImpl实现类。
比如:
sql语句映射文件配置文件了,需要让mybatis自动加载此配置文件,所以需要mybatis-config.xml,
此配置文件是mybatis启动参数配置,如数据库链接相关配置,实体类别名配置,sql语句映射文件指定以及mybatis相关插件配置等等。
就不过多解释了,配置内容一看就知道是什么意思。dialect是配置数据方言,即mybatis分页需要的参数也就是告诉mybaits你使用的是什么类型数据库。
因为每种数据库的分页sql语句不尽相同的,所以有必要抽象出一个Dialect接口:
然后就是各种数据库的方言接口实现:
MySQL实现:
SQLServer实现:
Oracle实现:
然后就是实现mybatis提供的拦截器接口,编写我们自己的分页实现,原理就是拦截底层JDBC操作相关的Statement对象,把前端的分页参数如当前记录索引和每页大小通过拦截器注入到sql语句中,即在sql执行之前通过分页参数重新生成分页sql,而具体的分页sql实现是分离到Dialect接口中去。
核心代码就是这些,至于分页插件怎么注册请查看mybatis-config.xml的配置。
最后编写一个测试类检验效果,为了简单我就没有写页面用web请求来模拟整个过程了,实际项目是需要在server层调用xxooMapper接口里的方法来操纵底层数据库执行sql语句,而Mapper接口实际也是通过解析Mapper.xml然后通过mybatis封装的接口去操作数据库,对于用户来说,具体操作数据库的细节都被屏蔽了,用户只需要告诉框架各种数据库操作的sql相关配置即可。
一对多的测试类:
多对一的测试类代码:
好吧,就写这么多了,很累,自己也是偷懒所以只是写java类来测试,没有写jsp用web形式来测试,其实如果用web形式来写,唯一区别就是不要直接操作mybatis的sqlsession接口,而是mybatis会自动将xxoomapper.xml和XXOOMapper.java一一对应,mapper.xml的命名空间等于mapper.java的完整包路径,而mapper接口里的所有方法名和mapper配置文件里的sql语句id对应,仅次而已。太累了,不想写那么麻烦,如果各位不知道web形式怎么实现,具体再QQ上或群里问吧,下班回家就一直在酝酿博客并编写测试示例,真的累了,就此搁笔了,不为什么,只要对各位有所帮助或者一丝启发就足矣。
- Mybatis分页 (2012-09-24 21:15:35)转载▼标签: mybatisspring分页 分类: J2EE
- [j2ee][自定义分页标签
- 转载一个分页标签开发
- (J2EE)Struts+Spring+MyBatis整合实现分页分页查询
- 两个字母搞定J2EE通用分页标签
- 基于mybatis 自定义标签分页的实现
- mybatis分页/分页插件
- MyBatis分页
- MyBatis分页
- mybatis分页
- MyBatis 分页
- Mybatis分页
- MyBatis分页
- MyBatis分页
- MyBatis分页 .
- mybatis分页
- mybatis--分页
- mybatis分页
- android-需求(二):“设置”里的版本号
- hdu_1.3.6_Saving HDU
- C++
- android同时使用多个library时的问题
- Android的文件系统结构 .
- Mybatis分页 (2012-09-24 21:15:35)转载▼标签: mybatisspring分页 分类: J2EE
- 暂停更新。。。。
- [2] quick-cocos2d-x 环境搭建
- 快捷方式打不开
- RSA 加解密算法
- 程序员对内存的理解
- MyBatis分页
- 《Win32多线程程序设计》读书笔记
- 怎样学好Python