1. Mybatis原生态(过时了)
/**
* step1: 根据配置mybatis_config.xml(全局配置文件)创建一个SqlSessionFactory对象
* step2: sql映射文件EmployeeMapper,配置了一个sql以及sql的封装规则等
* step3: 将sql映射文件注册在全局配置文件中
* step4: 写代码:
* 1. 通过全局配置文件得到sqlSessionFactory
* 2. 使用sqlSession工厂建造器,build一个sqlSessionFactory对象
* 3. 通过sqlSessionFactory.openSession()创建一个sqlSession
* 4. sqlSession.selectOne(sql语句的唯一id,返回的映射类)
*
* @return
*/
sqlSession的特点: |
---|
1. 的底层就是Connection, 是非线程安全的——》意味着不能反编译。 每次使用都应该去获取新的对象; |
2. 用完需要释放; |
2个重要的配置文件: |
---|
1. mybatis_conf.xml: 全局配置文件, 包含数据库和xxxMapping的配置文件 |
2. xxxMapping.xml: sql映射类配置文件, 包含了sql的映射信息—-》sql语句的唯一标识,返回的类型 |
1.1 mybatis的接口式编程(流行)
这样做的优点: |
---|
1. 接口的参数类型固定,防止sql参数类型错误; |
2. 接口的返回值类型固定,而不像原始的那样是Object类型; |
2. 接口式编程的进化史
原生态: 定义接口Dao——->通过DaoImpl来实现功能 |
---|
Mybatis: 定义一个全局配置文件(mybatis_conf.xml), 指明映射的配置文件:xxxMapping.xml———-》在xxxMapping.xml中的名称空间指定mapping接口, 将sql语句的id赋值为mapping接口中的方法, val赋值给mapping的bean类; |
3. Mybatis的全局设置项
注意: setting之前需要引入mybatis相关的包
<!--
2、settings,是setting的集合,包含很多重要的设置项
setting:用来设置每一个设置项
name:设置项名
value:设置项取值
-->
<settings>
<!--开启驼峰命名-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
4. 为处理器起别名
作用: 为Java类(主要是mysql的映射类)其别名,减小书写的长度 有了别名后,在sql映射类中,resultType值直接写别名即可。 |
---|
4.1 typeAlias
4.2 package
|
5. typeHandler 类型处理器
作用: 将Java的类属性与数据库中的字段进行一一映射,比如,Java中的string匹配mysql中的varchar |
---|
6. environments标签
环境,mybatis可以配置多种环境 ,default指定使用某种环境,用id来标识环境。 可以达到快速切换环境。 有2个子标签,transactionManager和dataSource |
---|
6.1 transactionManager
事物管理器, type指定管理器的类型
type:事务管理器的类型;JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
自定义事务管理器:实现TransactionFactory接口.type指定为全类名
最终的事物控制是Spring,以上的是历史版本。 |
|
6.2 dataSource
数据源
type:数据源类型;UNPOOLED(UnpooledDataSourceFactory)
|POOLED(PooledDataSourceFactory)
|JNDI(JndiDataSourceFactory)
自定义数据源:实现DataSourceFactory接口,type是全类名 |
7. mappers
作用: 将sql映射注册到全局配置中 处理的逻辑: 全局配置文件中注册sql的映射文件(如果有)——》映射文件配置对应的接口(resultType属性) |
---|
7.1 注册配置文件类型
resource:引用类路径下的sql映射文件
mybatis/mapper/EmployeeMapper.xml
url:引用网路路径或者磁盘路径下的sql映射文件
file:///var/mappers/AuthorMapper.xml |
|
7.2 注册接口类型
class:引用(注册)接口,
1、有sql映射文件,映射文件(xxx.xml)名必须和接口的文件名同名,并且放在与接口同一目录下;
2、没有sql映射文件,所有的sql都是利用注解写在接口上;——-》在方法名上加上insert/select等注解标签
推荐:
比较重要的,复杂的Dao接口我们来写sql映射文件
不重要,简单的Dao接口为了开发快速可以使用注解; |
|
7.3 批量注册接口
此时依旧需要sql的映射文件: xxxMapping.xml |