首页 > 代码库 > MyBatis 笔记
MyBatis 笔记
1、MyBatis中的一些要点:
1.1 SqlMapConfig.xml:mybatis的全局配置文件,配置mybatis的运行环境等信息,包括mapper.xml文件
1.2 mapper.xml:sql映射文件
1.3 SqlSessionFactory:根据SqlMapConfig.xml构造
1.4 SqlSession:由SqlSessionFactory生成,操作数据库需要通过SqlSession进行
1.5 Executor:MyBatis底层定义的操作数据库的执行器接口
1.6 Mapped Statement:MyBatis底层封闭对象,包装了MyBatis配置信息及sql映射信息等,mapper.xml文件中的一个sql语句对应一个Mapped Statement对象,sql的id是其id。MappedStatememt对sql执行的输入输出参数进行定义,包括HashMap、基本类型、pojo、输入输出映射由Ececutor完成
2、MyBatis默认使用Log4j记录日志,使用时应在classpath中配置log4j.properties文件
3、MyBatis使用原始Dao和Mapper接口两种方法实现Dao,实现Dao时应该要注意SqlSession是线程不安全的,每个线程都应该有自己的实例,每个Session都应控制在一个请求或一个方法内,并在每次使用后要关闭Session(finally)
3.1 使用原始Dao开发方式,需要编写Dao接口和对应的实现类及映射文件,Dao实现类通过SqlSession及sql.xml文件中的sql id完成数据库读写
3.2 Mapper接口需要编写mapper接口和mapper文件,开发规范:
1)mapper.xml文件中的namespace和mapper接口类路径相同
2)mapper接口方法名和mapper.xml中定义的statement的id相同
3)mapper接口输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
4)mapper接口输出参数类型和mapper.xml中定义的每个sql的resutType的类型相同
4、SqlMapConfig.xml配置文件常用配置内容:
1) properties:属性
利用properties标签可以引入外部文件如java属性文件,并在properties标签内定义其他内容
在properties元素属性加载顺序:
1)在properties体内定义的属性先被读取
2)propperties元素中的resource或url加载的属性
3)parameterType传递属性
加载时,后者会覆盖前者属性
2)settings:全局配置参数
MyBatis行为相关
3)typeAliases:类型别名
主要是自定义别名
4)environements:环境集合属性对象
environement:环境子属性对象
transactionManager:事务管理
dataSource:数据源
5) mappers:映射器
mappers配置几种方法
<mapper resource=""/>
<mapper url=""/>
<mapper class=""/>:要求mapper接口名称和mapper映射文件一样,在同一个目录下
<package name=""/>:注册指定包下所有mapper接口,要求mapper接口名称和mapper映射文件一样,在同一个目录下
5、mapper.xml文件
1)parameterType:输入类型,简单类型,pojo对象,hashmap
2)resultType:输出类型,简单类型,pojo对象,hashmap
3)resultMap:将查询结果映射为复杂类型的pojo
6、动态SQL
1)if:用于动态添加sql条件
2)where:和 if 配合使用自动处理第一个 if 中的 and
3)foreach:解析数组和List
4)sql:定义 sql 片段
7、一对一,一对多,多对多查询
resultMap 使用 association 和 collection 完成一对一和一对多高级映射
1)association 将关联查询信息映射到一个pojo对象中
2)collection 将关联查询信息映射到一个list集合中
8、延迟加载,在 association collection 中添加 select 内容指定查询Sql
9、查询缓存
MyBatis一级缓存的作用域是同一个SqlSession
MyBatis二级缓存的作用域是同一个namespace
10、和Spring整合时,sqlSessionFactory,dao要在spring中配置
MyBatis 笔记