1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 07-MyBatis 核心配置文件

07-MyBatis 核心配置文件

时间:2024-04-03 05:17:05

相关推荐

07-MyBatis 核心配置文件

MyBatis 核心配置文件

目录

properties 定义属性及读取属性文件settings 设置运行时行为typeAliases 类型别名定义单个别名批量定义别名typeHandlers 类型处理器Plugins(后续有文章专门介绍这个)Environments 运行环境databaseIDProvider 定义数据库厂商mappers 加载映射文件mapper resource=" "mapper class=" "package name=" "

关于这些配置文件,实际上我们只要写一份模板文件,以后都是可以参照的,特此记录。

以下操作全部是在 MyBatis 的核心配置文件中进行的。

可以查看 MyBats 文档:MyBatis 文档

properties 定义属性及读取属性文件

我们可以将数据库驱动,用户名,密码等信息放到单独的文件中,然后在配置文件中加载这个文件,这样有利于管理配置信息。

注:必须放在资源文件夹(resources)下,建立一个 db.properties ,在里面写入数据库配置信息。

jdbc.driver = com.mysql.jdbc.Driverjdbc.url = jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8jdbc.username=rootjdbc.password=1234

然后在配置文件 SqlMappingConfig.xml 中加载这个文件即可:

<!--定义属性及提取属性文件--><properties resource="db.properties"/>

接下来在数据库连接池中就可以动态获取 db.properties 中的属性了:

<!-- 数据库连接池 --><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></dataSource>

settings 设置运行时行为

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

所有属性可以去 MyBatis 官方文档查看:MyBatis 官方文档

简单举个示例:

设置如上属性,开启自动驼峰命名规则映射。

<settings><!--开启自动驼峰命名规则映射--><setting name="mapUnderscoreToCamelCase" value="true"/><!--配置sql打印--><setting name="logImpl" value="STDOUT_LOGGING"/></settings>

然后 domain 类中的变量名就可以用驼峰命名法(与数据库不同)。

测试类:如果开启自动驼峰命名规则映射后,domain 类中必须驼峰命名法,否则将会无法查询到。

public void test(){SqlSession sqlSession = MybatisUtils.openSession();CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class);Customer customer = mapper.getCustomerWithID(2, "李白");System.out.println(customer);sqlSession.close();}

运行结果:成功查询到结果并且封装成对象。

typeAliases 类型别名

typeAliases 可以为 Java 类型设置一个短的名字。

定义单个别名

下面我们为 com.itlike.domain.Customer 设置了别名,Customer,

<!--定义别名--><typeAliases><!--单个别名定义--><typeAlias alias="Customer" type="com.itlike.domain.Customer"></typeAlias></typeAliases>

则在映射文件中,resultType 不需要把整个包写上了,直接写别名 Customer 即可。

<!--根据id查询用户--><select id="getCustomerWithID" resultType="Customer">SELECT * FROM `customer` WHERE cust_id = #{id} AND cust_name = #{name}</select>

批量定义别名

下面给 com.itlike.domain 这个包下的类设置了别名,别名就是类名。

<!--定义别名--><typeAliases><!--批量定义别名,别名为类名--><package name="com.itlike.domain"/></typeAliases>

注:如果在定义了别名的包下,还有多个子包,并且存在相同名称的类名。则与上面批量定义别名冲突了。解决方法:利用 @Alias 注解给每个类定义新的名字。

typeHandlers 类型处理器

无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。

JDK1.8之后实现全部的JSR310规范,日期时间处理上,我们可以使用 MyBatis 基JSR310(Date and Time API)编写的各种日期时间类型处理器。

MyBatis3.4以前的版本需要我们手动注册这些处理器,以后的版本都是自动注册的

Plugins(后续有文章专门介绍这个)

插件是 MyBatis 提供的一个非常强大的机制,MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。通过插件来修改 MyBatis 的一些核心行为。

Environments 运行环境

MyBatis 可以配置多种环境,比如开发、测试和生产环境需要有不同的配置。

每种环境使用一个 environmen t标签进行配置并指定唯一标识符。

可以通过 environments 标签中的 default 属性指定一个环境的标识符来快速的切换环境。

environment 中有两个子标签,transactionManager 事务管理、dataSource数据源。

实际开发中我们使用 Spring 管理数据源,并进行事务控制的配置来覆盖上述配置,不会使用 MyBatis 的environments 配置。稍作了解即可。

databaseIDProvider 定义数据库厂商

MyBatis 可以根据不同的数据库厂商执行不同的语句。

<!--定义数据库厂商--><databaseIdProvider type="DB_VENDOR"><property name="MYSQL" value="mysql"/><property name="DB2" value="db2"/><property name="Oracle" value="oracle" /><property name="SQL Server" value="sqlserver"/></databaseIdProvider>

在映射文件中就可以指定厂商,只有当数据库与指定厂商匹配时,才会执行语句。

<!--根据id查询用户--><select id="getCustomerWithID" resultType="Customer" databaseId="mysql" >SELECT * FROM `customer` WHERE cust_id = #{id} AND cust_name = #{name}</select>

mappers 加载映射文件

mapper resource=" "

使用相对于类路径的资源:

<mappers><mapper resour ce="com/itlike/domain/Customer.xml"></mapper></mappers>

mapper class=" "

使用 mapper 接口类路径:此种方法要求 mapper 接口名称和 mapper 映射文件名称相同,且放在同一个目录中。

<mappers><!--1. 名称必须得要和接口名称一致2. 必须得要和 mapper 接口在同一目录下--><mapper class="com.itlike.mapper.CustomerMapper"></mapper></mappers>

package name=" "

加载指定包下的所有mapper接口。此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

<!--加载映射文件--><mappers><!--1. 名称必须得要和接口名称一致2. 必须得要和 mapper 接口在同一目录下--><package name="com.itlike.mapper"/> </mappers>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。