输入映射和输出映射
一.环境准备
- 复制昨天的工程,并更名
- 只保留Mapper接口开发相关的文件,其它的删除
- 修改SqlMapConfig.xml配置文件, Mapper映射器只保留包扫描的方式
二.parameterType(输入类型)
- 传递简单类型
使用#{}占位符 , 或者${}进行sql拼接 - 传递pojo对象
Mybatis使用ognl表达式解析对象字段的值, #{}或者${}括号中的值为pojo属性名称。 - 传递pojo包装对象
- 新建包装pojo对象QueryVo
- 映射文件与sql
- Mapper接口
- 新建包装pojo对象QueryVo
三.resultType(输出类型)
- 输出简单类型
- 输出pojo对象 ,同第一天内容
- 输出pojo列表 ,同第一天内容
四.resultMap
- 演示基于完成订单列表的查询,由user_id字段与pojo属性不一致时引出的resultMap
- 其它步骤跟前面类似,添加接口方法与测试方法,完成测试。
动态sql
一.If标签
- 演示基于完成用户列表查询功能,由多查询条件拼装引出if标签。
- 其它步骤跟前面类似,添加接口方法与测试方法,完成测试。
二.Where标签
- 复制getUserByWhere修改一下,改名为getUserByWhere2。
- 其它步骤跟前面类似,添加接口方法与测试方法,完成测试。
三.Sql片段
- 演示通过select * 不好引出查询字段名,抽取共用sql片段。
- 定义
- 使用
- 定义
- 其它步骤跟前面类似,添加接口方法与测试方法,完成测试。
四.foreach标签
- 复制getUserByWhere2修改一下,改名为getUserByIds。
- 其它步骤跟前面类似,添加接口方法与测试方法,完成测试。
关联查询
二.一对一关联
- 方法一,使用resultType
- 新建OrderUser的pojo,继承自Order。
- 修改order的映射文件,新增查询方法getOrderUser。
- 其它步骤跟前面类似,添加接口方法与测试方法,完成测试。
- 新建OrderUser的pojo,继承自Order。
- 方法二,使用resultMap
- 改造order的pojo
- 修改order的映射文件
- 其它步骤跟前面类似,添加接口方法与测试方法,完成测试。
- 改造order的pojo
三.一对多关联
- 改造user的pojo
- 修改user的映射文件
- 其它步骤跟前面类似,添加接口方法与测试方法,完成测试。
Mybatis整合Spring
一.整合思路
- SqlSessionFactory对象应该放到spring容器中作为单例存在。
- 传统dao的开发方式中,应该从spring容器中获得sqlsession对象。
- Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象。
- 数据库的连接以及数据库连接池事务管理都交给spring容器来完成。
二.整合步骤
- 创建一个java工程
- 导入jar包 (mybatis与spring整合所有包)
- mybatis的配置文件SqlMapConfig.xml
- 编写Spring的配置文件
- 数据库连接及连接池
- sqlsessionFactory对象,配置到spring容器中
- 编写Spring的配置文件
- 数据库连接及连接池
- 复制jdbc.properties配置文件到新工程
- 复制log4j.properties配置文件到新工程
三.Dao开发
- 复制user的pojo到新工程
- 传统Dao开发
⦁ 复制user.xml到新工程,并修改,只留下要测试的三个方法
⦁ 在SqlMapConfig.xml加载user.xml
⦁ 复制UserDao接口到新工程,并修改,只留下要测试的三个方法
⦁ 编写UserDaoImpl实现类,关键是继承SqlSessionDaoSupport
⦁ 在applicationContext.xml中配置UserDaoImpl实现类
⦁ 编写测试类,新建单完测试类 - Mapper代理模式开发Dao
⦁ 复制UserMapper.xml到新工程,并修改,只留下要测试的三个方法
⦁ 复制UserMapper接口到新工程,并修改,只留下要测试的三个方法
⦁ 配置Mapper- 单个接口配置MapperFactoryBean
- 配置包扫描器
- 单个接口配置MapperFactoryBean
Mybatis逆向工程
使用官方网站的Mapper自动生成工具mybatis-generator-core-1.3.2来生成po类和Mapper映射文件
- 导入工程
- 修改配置文件
- 生成逆向工程代码
- 刷新工程,发现代码生成
- 注: