Java Mybatis 全局配置(mybatis-config.xml)文件
Java Mybatis 全局配置(mybatis-config.xml)文件
- 1. properties标签,用于引用jdbc配置properties文件
- 2. settings标签,用于配置全局的相关设定.
- 3. typeAliases标签,为指定的Java类型取别名简化访问
- 4. typeHandlers标签,提供定义数据库类型和Java类型之间转换的类型处理器
- 5. environments标签,用于设定运行环境.在标签下可以定义若干个environment标签开设多个运行环境.
- 6. databaseIdProvider标签,用于设置SQL语句执行时的数据库环境,提供可移植性.
- 7. mappers标签,用于将编写好SQL语句的mapper文件注册到全局配置文件中
- 8. Mybatis操作数据库的增加,删除,修改
上一篇(链接):Java Mybatis 框架入门(一)(第一个mybatis程序)
上一篇我们了解到Mybatis框架和其他两个工具的对比,知道了Mybatis优势,也实现了我们 第一个Mybatis程序。但Mybatis框架的功能的强大,以及对一些复杂数据业务的处理的功能好处.今天先了解一下一部分常用的全局配置
MyBatis 的配置文件信息地址:https://mybatis.org/mybatis-3/zh/configuration.html
1. properties标签,用于引用jdbc配置properties文件
<properties url=”通过磁盘路径或者网络路径下的 properties文件”/>
<properties resource=”引用classpath下的 properties文件”/>
当一个properties文件导入到全局配置文件后,可以通过${key}的形式获取导入文件中键对应的值.
例如:
<property name=”driver” value=${driver}/>
注意: 这个部分配置在后期会交给spring框架来管理.
2. settings标签,用于配置全局的相关设定.
<setting name=” mapUnderscoreToCamelCase” value=”true”/>
默认值为false,修改为true可以将数据库中xx_XXX命名的字段对应给pojo类中xxXXX命名的属性(支持驼峰命名).
3. typeAliases标签,为指定的Java类型取别名简化访问
注意:在使用别名时,不区分大小写(建议直接使用类名当做别名).
-
单独取别名
<typeAlias type="类名全称" alias="别名"/> 示例:<typeAlias type="com.mybatis.pojo.Student" alias="student"/>
-
批量取别名
<package name="包名全称"/> 示例:<package name=" com.mybatis.pojo "/>
默认情况下,批量取别名会将指定包及它的子包中全部的类按照类名小写的形式取别名.
-
注解去别名
当采用批量取别名的方式时,指定包中的类和指定包中子包中类.名称一样(属性可能不一样).就会发生别名的命名冲突.通过在发生别名命名冲突的类上添加
示例: @ Alias (“stu”) Class XXX{…..}
-
Mybatis提供的默认别名
在mybatis中已经对常见的Java类型定义了别名,规则如下:
基本类型的别名为:_类型名 例如: 类型:byte 别名:_byte
引用类型的别名为: 小写类型名 例如: 类型:String 别名:string
4. typeHandlers标签,提供定义数据库类型和Java类型之间转换的类型处理器
<typeHandlers>
<typeHandler handler="用哪个类转换" javaType="java类型" jdbcType="数据库类型"/>
</typeHandlers>
注意:
在mybatis3.4之前的版本针对时间处理,需要使用JDK1.8支持的新的时间类型,需要自行添加类型处理器
5. environments标签,用于设定运行环境.在标签下可以定义若干个environment标签开设多个运行环境.
MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。
不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推,记起来很简单。
<environment id=”运行环境唯一标识”>
<transactionManager type=”事务管理类型JDBC|MANAGED”/>
<datasource type=”数据源类型UNPOOLED|POOLED|JNDI” >
…..
</datasource>
</ environment>
注意一些关键点:
-
默认使用的环境 ID(比如:default=“development”)。
-
每个 environment 元素定义的环境 ID(比如:id=“development”)。
-
事务管理器的配置(比如:type=“JDBC”)。
-
数据源的配置(比如:type=“POOLED”)。
默认环境和环境 ID 顾名思义。 环境可以随意命名,但务必保证默认的环境 ID 要匹配其中一个环境 ID。
-
transactionManager:
JDBC表示事务按数据库标准控制
MANAGED表示交给容器进行事务控制. -
datasource:
UNPOOLED: 表示使用标准的JDBC连接
POOLED: 表示使用连接池控制连接
JNDI: 表示使用服务器上下文提供的数据连接
注意:
以上两种类型都可以自定义,创建自定义类实现对应的接口,在type属性填入自定义类的全类名就可以使用自定义的类型
6. databaseIdProvider标签,用于设置SQL语句执行时的数据库环境,提供可移植性.
例如:下面配置了两种数据库运行环境
<databaseIdProvider type=”DB_VENDOR”>
<property name=”数据库厂商标识” value=”定义名称”/>
<property name=”MySQL” value=”mysql”/>
</databaseIdProvider>
在具体指定的sql语句上,通过databaseId=”定义名称”来标识,发送的sql语句在指定的环境下执行
<select id="selectStudent" resultType="Student" databaseId="mysql">
select id,name,age,stu_phone from Student
</select>
7. mappers标签,用于将编写好SQL语句的mapper文件注册到全局配置文件中
-
单独注册:
mapper标签的属性:resource=”引用classpath下的mapper.xml文件”
例如:url=”引用磁盘或者网络路径下的mapper.xml文件”:
例如: <mapper url=”C:/StudentMapper.xml”/>
class=”直接引用对应接口的全类名”
例如: <mapper class=”com.mybatis.dao.StudentMapper”/>
注意:
如果使用mapper.xml还要用class属性引用接口.要求mapper文件和接口名称一致且在同一个包中.
如果没有使用mapper.xml还要用class属性引用接口.可以在接口中对应的方法上通过注解的形式配置执行的sql语句.例如 @Select(“sql语句”)
推荐采用mapper.xml的形式配置sql,方便对于程序的维护.
-
批量注册:
package标签的属性:
name=”要注册的包名全称”
例如:<package name=”com.mybatis.dao”/>
会将这个属性对应的包下所有xml文件和对应名称的接口注册到全局配置文件中.
注意:
要求xml文件名称必须和接口名称一致,且在同一个包中.
批量注册只适用于采用接口的形式操作.
8. Mybatis操作数据库的增加,删除,修改
- mybatis默认支持增,删,改对应的方法返回值为:Integer,boolean,void及它们对应的基础类
- 在操作完成之后,需要提交或者回滚事务
- 采用接口映射的形式操作,传入参数的类型在mapper.xml文件中可以省略不写,但返回值类型不是mybatis支持的默认类型时,需要通过resultType属性来说明
总结:全局配置文件“mybatis-config.xml(自定义文件名)”作为我们mybatis框架很重要的文件,我们要了解它的全局配置文件,熟悉掌握,可以让我们更加灵活的使用mybati框架哦!!!
更新:
链接:JavaMybatis 框架入门(三)(Mybatis中参数的处理)
博主:点赞的都是帅锅,美女哦!!!💕💕💕