Python 官方文档:入门教程 => 点击学习
目录mybatis全局配置文件settings设置typeAliases类型命名存在的问题:@Alias("")environments环境transactionManager事务管
MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings
)和属性(properties
)信息。文档的
顶层结构如下:
configuration
配置properties
属性settings
设置typeAliases
类型命名typeHandlers
类型处理器objectFactory
对象工厂plugins
插件environments
环境environment
环境变量transactionManager
事务管理器dataSource
数据源databaseIdProvide
r 数据库厂商标识mappers
映射器properties 属性
mybatis
可以使用properties来引入外部properties配置文件的内容
resource
:引入类路径下的资源
url:引入网络路径或者磁盘路径下的资源
<properties resource="dbconfig.properties"></properties>
如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:
这是 MyBatis 中极为重要的调整设置,它们会改变MyBatis 的运行时行为。
setting包含很多重要的设置项
setting
:用来设置每一个设置项
name
:设置项名
value
:设置项的取值
mapUnderscoreToCamelCase
:驼峰命名 last_name -> lastName
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
typeAliases
:可以批量设置别名这个包下的每一个类
别名不区分大小写
创建一个默认的别名,就是简单类名小写
typeAlias
:为某个java类型起别名
type
:指定要起别名的类型全类名;默认别名就是类名小写:employee
alias
:指定新的别名
package
:为某个包下的所有类批量起别名
name
:指定包名(为当前包下以及下面所有的后代包的每一个类都起一个默认的别名(类名小写))
假设bean包下有一个类Employee,同时在bean包下有一个子包也有一个类叫Employee,此时这两个包的类名就会冲突,因此还可以使用注解的放上为类创建别名
public class Employee{}
值得注意的是,MyBatis已经为许多常见的 Java 类型内建了相应的类型别名。它们都是大小写不敏感的,我们在起别名的时候千万不要占用已有的别名。
mybatis可以配置多种环境 default指定使用某种环境,可以达到快速切换
environments
:配置一个具体的环境信息;必须有两个标签,id代表当前环境的唯一标识
type
:事务管理器的类型 [JDBC(使用了 JDBC 的提交和回滚设置,依赖于从数据源得到的连接来管理事务范围。)|MANAGED
(不提交或回滚一个连接、让容器来管理事务的整个生命周期(比如 JEE应用服务器的上下文))]
自定义事务管理器 实现TransactionFactory接口即可
dataSource 数据源
type
:数据源的类型 [UNPOOLED
(不使用连接池)|POOLED
(使用连接池)|JNDI
(在EJB 或应用服务器这类容器中查找指定的数据源)]
自定义数据源 实现DataSourceFactory接口
实际开发中我们使用spring管理数据源,并进行事务控制的配置来覆盖上述配置
databaseIdProvider: 可以根据不同的数据库厂商执行不同的语句。
type
:数据库类型 DB_VENDOR
作用就是得到数据库厂商标识(驱动自带的),mybatis就能根据数据库厂商标识来执行不同的sql
value:为标识起一个别名,方便SQL语句使用databaseId属性引用
会通过 DatabaseMetaData#getDatabaseProductName() 返回的字符串进行设置。由于通常情况下这个字符串都非常长而且相同产品的不同版本会返回不同的值,所以最好通过设置属性别名来使其
MyBatis匹配规则如下:
mappers 映射器
mapper:注册一个sql映射
注册配置文件
resource
:引用类路径下的sql映射文件
url:用网路路径下的或者磁盘路径下的sql映射文件
注册接口
class:引应用接口
注解写在接口上
推荐:比较重要和复杂额Dao接口写sql映射文件,不重要的简单的为了开发快速可以使用注解
package:批量注册
namespace
:名称空间;指定为接口的全类名
id
:唯一标识
resultType
:返回值类型
#{id}
:从传递过来的参数中取出id值
<?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="school.xauat.mybatis.dao.EmployeeMapper">
<select id="getEmpById" resultType="employee" >
select * from tbl_employee where id = #{id}
</select>
<select id="getEmpById" resultType="employee" databaseId="mysql">
select * from tbl_employee where id = #{id}
</select>
<select id="getEmpById" resultType="employee" databaseId="oracle">
select * from tbl_employee where id = #{id}
</select>
</mapper>
1、接口是编程
原生: Dao -----> DaoImpl
Mybatis: Mapper -----> xxMapper.xml
2、SqlSession代表和数据库的一次会话,用完必须关闭
3、SqlSession和connection一样,都是非线程安全的。每次使用都应该获取新的对象
4、mapper接口没有实现类,但是Mybatis会为这个接口生成一个代理对象(将接口和xml进行绑定)
EmployeeMapper empMapper
= SqlSession.getMapper(Employee.class)
;
5、两个重要的配置文件
mybatis的全局配置文件;包含数据库连接池信息,事务管理器信息,系统运行信息
sql映射文件:保存了每一个SQL语句的映射信息
将sql抽取出来
--结束END--
本文标题: MyBatis全局配置文件详解
本文链接: https://lsjlt.com/news/130150.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0