Mybatis主配置文件详解
配置文件的作用
- mybatis一共有两个配置文件(都是.xml文件):一个是映射文件mapper,一个是主配置文件文件mapper.
- 主配置文件中可以注册
db.properties属性文件(也就是配置数据源的文件)
,方便使用. - 注册实体类的全限定类名的别名
- 配置MyBatis的运行环境,即数据源与事务管理器.
- 注册映射文件Mapper.
Mybatis配置文件实现注册db.properties属性文件
------db.properties
jdbc.driver=com.mysql.jdbc.Driver
//当连接数据库时候出现时区异常的时候后面加上这句话就好了:
------useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis_project?useSSL=false
jdbc.username=root
jdbc.password=root
------mybatis.xml
<?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>
<!--注册配置文件,告诉mybatis去哪里找配置文件-->
<properties resource="db.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--去配置文件中读取jdbc的信息-->
<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>
</environment>
</environments>
<mappers>
<!--注册映射文件-->
<mapper resource="com/ctgu/dao/StudentDaoMapper.xml"/>
</mappers>
</configuration>
Mybatis主配置文件注册实体类的全限定类名的别名
<typeAliases>
<typeAlias type="com.ctgu.bean.Student" alias="student">
</typeAlias>
</typeAliases>
这样子以后就可以用`student`代替Student这个类了,一般我们的别名就是类名首字母小写.
------还有一种写法:因为我们有时候会创建很多bean,所以要写很多行,很麻烦,我们可以把这个交给mybatis去做
<typeAliases>
<package name="com.ctgu.bean"></package>
</typeAliases>
这样之后,bean包下面的所有类,mybatis都会给他取个别名
名称就是类名首字母小写,比如StudentMap,那么它的默认别名就是studentMap.
Mybatis主配置文件配置MyBatis的运行环境
我们在开发的过程中,可能会有很多的数据库给我们使用,比如我们自己电脑上会有一个,服务器会有一个,客户也会有一个,我们不能在哪里用就去改配置文件吧,这也蛮麻烦,所以Mybatis支持多数据源配置哈哈哈哈
,就是可以同时配置多个数据库,这个没连接上连接另一个
当你想切换数据库的时候,修改<environments default="development">
中default
的内容为对应数据源的id
即可
比如我想用test的数据源,我就讲其修改为<environments default="test">
,它就会去使用测试数据库了.
-------environments标签中environment 标签中的内容就是在配置数据库环境
-------可以有多个environment 标签配置多个数据源
-------注意在db.properties中记得配置不同数据源的参数就可以了
<environments default="development">
<!--开发环境-->
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--去配置文件中读取jdbc的信息-->
<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>
</environment>
<!--测试环境-->
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--去配置文件中读取jdbc的信息-->
<property name="driver" value="${test.driver}"/>
<property name="url" value="${test.url}"/>
<property name="username" value="${test.username}"/>
<property name="password" value="${test.password}"/>
</dataSource>
</environment>
</environments>
Mybatis主配置文件注册映射文件Mapper
------就是下面的内容,就表示注册mapper.xml映射文件
------此时mybatis就知道了sql语句在哪里了,他就会去里面找.
<mappers>
<!--注册映射文件-->
<mapper resource="com/ctgu/dao/StudentDaoMapper.xml"/>
</mappers>
注意: 我们在写配置文件的时候,一般都写全限定类名,就是包名.类名
的形式
好了配置文件的基本东西就知道了,这里接着写一个小东西
Mybatis获取主键
在前一篇博客mybatis-1中,我在创建数据库的时候使主键id自增,我们就不需要手动输入主键,当插入数据库之后我们就能知道这条数据的id
,其实我们可以在数据插入到数据库前获取主键 ,即这样做:
------resultType表示返回的时int类型的数据
------keyProperty表示要返回的属性是id
------order="AFTER"表示获取的是"假如成功插入后"的数据
此时就算你在事务提交之前获取id,它的id值也会是`如果事务提交之后`的id
------order="BEFORE"表示获取还没插入前的id,那么一定是0
即你不管在事务提交前还是事务提交后获取id,都是0
<selectKey resultType="int" keyProperty="id" order="AFTER">
select @@identity
</selectKey>