写点什么

mybatis 配置详解

用户头像
xiezhr
关注
发布于: 2021 年 03 月 14 日
mybatis 配置详解

mybatis-config.xml 核心配置文件

mybatis-config.xml 包含的内容如下

  • configuration(配置)

  • properties(属性)

  • settings(设置)

  • typeAliases(类型别名)

  • typeHandlers(类型处理器)

  • objectFactory(对象工厂)

  • plugins(插件)

  • environments(环境配置)

  • environment(环境变量)

  • transactionManager(事务管理器)

  • dataSource(数据源)

  • databaseIdProvider(数据库厂商标识)

  • mappers(映射器)


注意元素节点的顺序!顺序不对会报错

1. environments 元素

<environments default="development"> <environment id="development">   <transactionManager type="JDBC">     <property name="..." value="..."/>   </transactionManager>   <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> <environment id="test">   <transactionManager type="JDBC">     <property name="..." value="..."/>   </transactionManager>   <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>
复制代码
  • environments 配置 mybatis 多套环境,将 sql 映射到多个不同的数据库上,必须指定一个默认环境,即 default="development"

1.1 子元素 environment


其中 dataSource 数据源(共三种内建的数据源类型)

        type="[UNPOOLED|POOLED|JNDI]")
复制代码
  • unpooled:这个数据源的实现只是每次被请求时打开和关闭连接

  • pooled:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来 , 这是一种使得并发 Web 应用快速响应请求的流行处理方式。

  • jndi:这个数据源的实现是为了能在如 Spring 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。

注: 数据源也有很多第三方的实现,比如 dbcp,c3p0,druid 等等....

1.2 transactionManager 事务管理器(共两种)

        <transactionManager type="[ JDBC | MANAGED ]"/>
复制代码

2. mappers 元素(定义映射 SQL 语句文件)


主要用于找到 sql 语句的文件在哪里?可以使用不同的方式引用 sql 语句 具体的引用方式如下


  • 使用相对路径引入 sql 语句的文件

<!-- 使用相对于类路径的资源引用 --><mappers> <mapper resource="org/mybatis/builder/PostMapper.xml"/></mappers>
复制代码
  • 使用完全限定资源定位符(URL)

<!-- 使用完全限定资源定位符(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>
复制代码


**mapper 配置文件

主要用用关联 dao 接口中的方法,并书写 sql 语句 相当于实现了接口中的各个方法

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiezhr.dao.UserMapper"> <select id="getUserList" resultType="com.xiezhr.pojo.User"> select * from mybatis.user; </select>
<insert id="addUser" parameterType="com.xiezhr.pojo.User"> insert into mybatis.user values(#{id},#{name},#{pwd}) </insert>
<update id="updateUserById" parameterType="int"> update mybatis.user set name='小头爸爸' where id=#{id} </update>
<delete id="deleteUserById" parameterType="int"> delete from mybatis.user where id=#{id} </delete></mapper>
复制代码

3.properties

  • 我们都知道在 java 开发中,通过 properties 文件来配置一些参数。这我们就要通过 db.properties 文件来配置连接数据库的各个属性


具体步骤如下


(1)编写 db.properties 文件

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8username=rootpassword=123456
复制代码

(2)在 mybatis 核心配置文件中加在外部配置文件来连接数据库

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <properties resource="db.properties"/>     <environments default="development">        <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>
<mappers> <mapper resource="com/xiezhr/Dao/UserMapper.xml"></mapper> </mappers></configuration>
复制代码

4. typeAliases(定义别名)

  • 类型别名是为 java 类型这只一个短的名字。意义在于用来减少过长类名的冗余


(1)自定义 javabean 别名

<typeAliases>        <typeAlias type="com.xiezhr.pojo.User" alias="user"/></typeAliases>
复制代码

如上配置之后就可以在任何地方用 user 代替 com.xiezhr.pojo.User 配置别名也可按照下面方式配置


(2)配置所有 com.xiezhr.pojo 包下的 Javabean 别名为小写的类名

<typeAliases>   <package name="com.xiezhr.pojo"/></typeAliases>
复制代码

通过上述配置之后,以下的 xml 即等价

<select id="getUserList" resultType="user">     select * from mybatis.user;</select>
复制代码


<select id="getUserList" resultType="com.xiezhr.pojo.user">     select * from mybatis.user;</select>
复制代码

其他配置【设置】

设置常用的有如下几个


  • 懒加载

  • 日志实现

  • 缓存的开启与关闭

下面是一个完整的 setting 元素示例

<settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <setting name="useGeneratedKeys" value="false"/> <setting name="autoMappingBehavior" value="PARTIAL"/> <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="defaultStatementTimeout" value="25"/> <setting name="defaultFetchSize" value="100"/> <setting name="safeRowBoundsEnabled" value="false"/> <setting name="mapUnderscoreToCamelCase" value="false"/> <setting name="localCacheScope" value="SESSION"/> <setting name="jdbcTypeForNull" value="OTHER"/> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/></settings>
复制代码


发布于: 2021 年 03 月 14 日阅读数: 8
用户头像

xiezhr

关注

把分享变成一种习惯,再小的帆也能远航 2021.03.01 加入

还未添加个人简介

评论

发布
暂无评论
mybatis 配置详解