1. Mybatis原生态(过时了)

mybatis全过程.png

  1. /**
  2. * step1: 根据配置mybatis_config.xml(全局配置文件)创建一个SqlSessionFactory对象
  3. * step2: sql映射文件EmployeeMapper,配置了一个sql以及sql的封装规则等
  4. * step3: 将sql映射文件注册在全局配置文件中
  5. * step4: 写代码:
  6. * 1. 通过全局配置文件得到sqlSessionFactory
  7. * 2. 使用sqlSession工厂建造器,build一个sqlSessionFactory对象
  8. * 3. 通过sqlSessionFactory.openSession()创建一个sqlSession
  9. * 4. sqlSession.selectOne(sql语句的唯一id,返回的映射类)
  10. *
  11. * @return
  12. */
sqlSession的特点:
1. 的底层就是Connection, 是非线程安全的——》意味着不能反编译。 每次使用都应该去获取新的对象;

2. 用完需要释放;
2个重要的配置文件:

1. mybatis_conf.xml: 全局配置文件, 包含数据库和xxxMapping的配置文件

2. xxxMapping.xml: sql映射类配置文件, 包含了sql的映射信息—-》sql语句的唯一标识,返回的类型

1.1 mybatis的接口式编程(流行)

改进mapper配置文件.png

这样做的优点:

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相关的包

  1. <!--
  2. 2、settings,是setting的集合,包含很多重要的设置项
  3. setting:用来设置每一个设置项
  4. name:设置项名
  5. value:设置项取值
  6. -->
  7. <settings>
  8. <!--开启驼峰命名-->
  9. <setting name="mapUnderscoreToCamelCase" value="true"/>
  10. </settings>

4. 为处理器起别名

作用: 为Java类(主要是mysql的映射类)其别名,减小书写的长度
有了别名后,在sql映射类中,resultType值直接写别名即可。

4.1 typeAlias


| |

4.2 package


|

image.png

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是全类名 |

mybatis_environment.png

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等注解标签
image.png
推荐:
比较重要的,复杂的Dao接口我们来写sql映射文件
不重要,简单的Dao接口为了开发快速可以使用注解; | |

7.3 批量注册接口

此时依旧需要sql的映射文件: xxxMapping.xml |