mybatis-config.xml 核心配置文件
mybatis-config.xml 包含的内容如下
注意元素节点的顺序!顺序不对会报错
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>
复制代码
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 语句 具体的引用方式如下
<!-- 使用相对于类路径的资源引用 --><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>
复制代码
**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
具体步骤如下
(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(定义别名)
(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>
复制代码
评论