Mybatis是一款轻量级的持久化框架,它可以很好地解决Java应用程序与关系型数据库之间的交互问题。下面将从以下几个方面对Mybatis进行总结。
1)Mybatis工作原理
Mybatis的工作原理是将Java程序中的SQL语句与数据库中的表进行映射,使得Java程序可以通过调用Mybatis提供的API来实现与数据库的交互。Mybatis的工作流程包括:
1.1)读取配置文件:Mybatis会读取配置文件中的信息,包括数据库连接信息、映射文件信息等。
1.2)创建SqlSessionFactory:SqlSessionFactory是Mybatis的核心接口,它负责创建SqlSession对象,每个SqlSession对象都代表了一个数据库连接。SqlSessionFactory是线程安全的,通常只需要创建一个实例即可。
1.3)创建SqlSession:SqlSession是Mybatis操作数据库的主要接口,它提供了各种方法来执行SQL语句,包括查询、插入、更新、删除等。每个SqlSession对象都可以操作一个事务,它也是线程不安全的,每个线程都应该拥有自己的SqlSession对象。
1.4)执行SQL语句:SqlSession对象可以通过调用它提供的方法来执行SQL语句,包括查询、插入、更新、删除等。Mybatis会将SQL语句转换为对应的JDBC操作,并执行在数据库中。
1.5)返回结果:Mybatis会将查询结果封装成Java对象返回给调用方,对于更新和删除操作,Mybatis会返回受影响的行数。
2)Mybatis核心配置文件
Mybatis的核心配置文件是mybatis-config.xml,它包含了Mybatis的全局配置信息,例如数据库连接信息、缓存配置、插件配置等。具体包含以下内容:
2.1)数据源配置:用于配置数据库连接信息,包括数据库驱动、URL、用户名、密码等。
2.2)类型别名配置:用于给Java对象起别名,方便在映射文件中使用。
2.3)插件配置:用于配置Mybatis的插件,可以在SQL执行前后做一些额外的处理。
2.4)缓存配置:用于配置Mybatis的缓存,包括一级缓存和二级缓存的配置。
3)Mybatis映射文件
Mybatis的映射文件是mapper.xml,它用于将Java程序中的SQL语句与数据库中的表进行映射。映射文件包含以下内容:
3.1)命名空间:用于指定映射文件所映射的数据库表或SQL语句。
3.2)结果集映射:用于将查询结果映射为Java对象,可以通过resultMap标签进行配置。
3.3)SQL语句:用于执行SQL语句,包括查询、插入、更新、删除等。可以通过select、insert、update、delete标签进行配置。
3.4)参数映射:用于将Java对象映射为SQL语句的参数,可以通过parameterType标签进行配置。
4)动态SQL
动态SQL是Mybatis提供的一种灵活的SQL拼接方式,可以根据不同的条件动态地拼接SQL语句。Mybatis提供了以下几种动态SQL标签:
4.1)if标签:用于判断条件是否成立,如果成立则拼接SQL语句。
4.2)choose、when、otherwise标签:用于实现类似于Java中的switch语句的功能。
4.3)foreach标签:用于循环遍历Java集合,并将其中的元素拼接到SQL语句中。
4.4)set标签:用于更新操作,可以将要更新的字段拼接到SQL语句中。
5)关联关系(1对1、1对多、多对多)
Mybatis支持多种关联关系的映射,包括1对1、1对多、多对多等。映射关系可以通过resultMap标签进行配置。具体包含以下内容:
5.1)一对一映射:通过resultMap标签中的association标签进行配置。
5.2)一对多映射:通过resultMap标签中的collection标签进行配置。
5.3)多对多映射:通过中间表进行映射,需要定义额外的POJO类和Mapper接口。
6)一级缓存和二级缓存
Mybatis提供了两种缓存机制,一级缓存和二级缓存。一级缓存是SqlSession级别的缓存,它默认开启,可以通过commit或者close方法强制清空。二级缓存是SqlSessionFactory级别的缓存,需要手动开启,可以通过配置文件进行配置。具体包含以下内容:
6.1)一级缓存:SqlSession级别的缓存,可以通过调用clearCache方法清空。
6.2)二级缓存:SqlSessionFactory级别的缓存,需要手动开启,可以通过配置文件进行配置。缓存的内容是查询结果对象,需要实现Serializable接口。
以上就是Mybatis持久化框架的主要知识点总结。