Mybatis配置解析
- 在mybatis-config.xml 里面进行配置
- 所有能配置的内容如下
configuration(配置) properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境配置) environment(环境变量) transactionManager(事务管理器) dataSource(数据源) databaseIdProvider(数据库厂商标识) mappers(映射器) <!-- 注意元素节点的顺序!顺序不对会报错 -->
常用配置:
1.configuration
<!--配置环境(可以配置多套环境,可以指定选用的环境)--> <environments default="development"> <!--配置mysql的环境--> <environment id="development"> <!--配置事务的类型--> <transactionManager type="JDBC"/> <!--配置数据源(连接池)--> <dataSource type="POOLED"> <!--配置连接数据库的基本信息--> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments>
- 配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,必须指定其中一个为默认运行环境(通过default指定)
- 子元素节点:transactionManager事务管理器,有两种分别是JDBC和MANAGED
- 子元素节点:dataSource数据源有三种类型,分别是如下
- unpooled:这个数据源的实现只是每次被请求时打开和关闭连接。
- pooled:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来 , 这是一种使得并发 Web 应用快速响应请求的流行处理方式
- jndi:这个数据源的实现是为了能在如 Spring 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。
- 数据源也有很多第三方的实现,比如dbcp,c3po,druid等等
2.mappers
引入资源方式:
<!-- 使用相对于类路径的资源引用 --> <mappers> <mapper resource="org/mybatis/builder/PostMapper.xml"/> </mappers>
<!-- 使用完全限定资源定位符(URL) --> <mappers> <mapper url="file:///var/mappers/AuthorMapper.xml"/> <mappers>
<!-- 使用映射器接口实现类的完全限定类名 需要配置文件名称和接口名称一致,并且位于同一目录下 --> <mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> </mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 但是需要配置文件名称和接口名称一致,并且位于同一目录下 --> <mappers> <package name="org.mybatis.builder"/> </mappers>
3.properties
数据库的属性是可以动态替换的,所以我们可以用properties文件来传递属性
- 在resources目录下新建一个db.properties文件
driver = com.mysql.cj.jdbc.Driver url = jdbc:mysql://localhost:3306/mybatiserverTimezone=UTC username = root password = root
- 在配置文件中导入properties(配置文件是有顺序的)
<configuration> <!--引入db.properties资源文件--> <properties resource="db.properties"/> <!--配置环境(可以配置多套环境,可以指定选用的环境)--> <environments default="development"> <!--配置mysql的环境--> <environment id="development"> <!--配置事务的类型--> <transactionManager type="JDBC"/> <!--配置数据源(连接池)--> <dataSource type="POOLED"> <!--配置连接数据库的基本信息--> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> </configuration>
4.typeAliases
设置别名,我们可以在mapper文件中不用写那么长的全限类名了
<!--配置别名,注意顺序--> <typeAliases> <typeAlias type="com.lili.entity.User" alias="User"/> </typeAliases>
也可以使用以下的方式,则配置如下:
<!--扫描包下的所有javaBean--> <typeAliases> <typeAlias package="com.lili.entity"/> </typeAliases>
每一个在包 com.lili.entity 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。若有注解,则别名为其注解值。见下面的例子:
@Alias("user") public class User { ... }
5.常用settings
<settings> <setting name="cacheEnabled" value="true"/> //是否开启缓存 <setting name="lazyLoadingEnabled" value="true"/>//是否开启懒加载 <setting name="mapUnderscoreToCamelCase" value="false"/>// 是否开启下划线转驼峰 </settings>