一, SqlSession 的使用范围说明
1,SQLSessionFactoryBuilder
通过 SqlSessionFactoryBuilder 创建会话工厂 SqlSessionFactory, 将 SqlSessionFactoryBuilder 当成一个工具类使用即可, 不需要使用单例模式管理, 在创建 SqlSessionFactory 的时候, 只需要 new 一次 SqlSessionFactoryBuilder 即可.
2,SqlSessionFactory
通过 SqlSessionFactory 创建 SqlSession, 使用单例模式来管理 SqlSessionFactory(工厂一旦创建, 只使用一个实例).
3,SqlSession
SqlSession 是一个面向用户 (程序员) 的接口.
SqlSession 中提供了很多操作数据库的方法: 如 selectOne(返回单个对象),selectList(返回单个或多个对象).
SqlSession 是线程不安全的, 因为在 SqlSession 中除了有接口中的方法 (操作数据库的方法) 之外. 还有数据域属性.
SqlSession 的最佳应用场合是在方法体内, 将其定义为局部变量来使用.
二, SqlMapConfig.xml 配置文件详解
1,Properties 属性
Properties 属性用来加载属性配置文件.
- <!--
- 加载属性文件
- resource: 属性文件的相对路径
- url: 属性文件的绝对路径
- -->
- <properties resource="config/db.properties">
- <!--
- 配置一些属性
- name: 属性的名称
- value: 属性的值
- -->
- <!--<property name=""value="" /> -->
- </properties>
properties 特性:
Mybatis 将按照下面的属性来加载属性:
1. 首先会读取在 property 标签中定义的属性.
2. 然后会读取在 properties 标签中通过 resource 或 url 加载时的属性, 它会覆盖已读取得同名属性.
3. 最后会读取 sql 中 parameterType 传递过来的属性, 它会覆盖已读取的同名属性.
2,settings 全局参数配置
Mybatis 框架在运行时可以调整一些运行参数, 比如: 开启二级缓存, 开启延迟加载等. 这些参数要通过 settings 标签来配置, 全局参数会影响 Mybatis 的运行行为, 配置一定要注意.
常用的全局配置参数如下:
- <!-- 全局参数配置 -->
- <settings>
- <!--
- name: 属性名称
- value: 属性的值
- -->
- <setting name=""value=""/>
- </settings>
- 3,typeAlia
在映射文件中的 parameterType 和 resultType 属性中要指定输入, 输出映射类型, 如果类型为 PO, 要指定 PO 类的全路径这样不是特别方便, 可以使用 typeAlias 定义一些别名, 来方便开发.
- <!-- 定义别名 -->
- <typeAliases>
- <!--
- type: 需要起别名的字符串
- alias: 对应的别名
- -->
- <typeAlias type=""alias="" />
- <!--
- name: 包名, 会对包下面的类进行扫描, 自动批量设置别名,
- 设置的别名为类名, 首字母大小写均可
- -->
- <package name="" />
- </typeAliases>
Mybatis 的默认别名
4,typeHandlers(类型处理器)
Mybatis 中通过 typeHandlers 完成 jdbc 类型和 Java 类型的装换. 通常情况下, Mybatis 提供的类型处理器满足日常需要, 不需要我们再自定义.
- <typeHandlers>
- <typeHandler handler=""jdbcType="" javaType="" />
- </typeHandlers>
Mybatis 默认支持的数据类型
5,environments 环境
- <!--
- 环境配置
- 在和 Spring 整合后改配置将废除
- -->
- <environments default="development">
- <environment id="development">
- <!-- 使用 JDBC 的事务管理, 事务管理交给 Mybatis-->
- <transactionManager type="JDBC"></transactionManager>
- <!-- 数据库连接池, 有 Mybatis 管理 -->
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc.Driver" />
- <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
- <property name="username" value="root" />
- <property name="password" value="root" />
- </dataSource>
- </environment>
- </environments>
6,mapper 加载映射文件
加载映射文件有三种方式
1, 加载单个映射文件
- <!-- 引入 mapper-->
- <mappers>
- <!--rerource: 引入映射文件相对于 classpath 的地址 -->
- <mapper resource="config/sqlmap/userMapper.xml" />
- </mappers>
2, 通过 Mapper 接口加载单个映射文件
前提条件:
(1). 使用 Mapper 代理的方式进行开发.
(2). Mapper 接口文件名要和映射文件名一致
(3).Mapper 接口文件和映射文件在同一个目录下
- <!-- 引入 mapper-->
- <mappers>
- <mapper class="com.jack.po.UserMapper" />
- </mappers>
3, 批量记载映射文件
前提条件:
(1). 使用 Mapper 代理的方式进行开发.
(2). Mapper 接口文件名要和映射文件名一致
(3).Mapper 接口文件和映射文件在同一个目录下
- <!-- 引入 mapper-->
- <mappers>
- <!--name:mapper 接口文件所在的包路径 -->
- <package name="" />
- </mappers>
本文来自上海尚学堂学员
来源: http://www.bubuko.com/infodetail-3040535.html