0%

【Mybatis】全局配置文件

Mybatis全局配置文件学习笔记

一、properties(属性)

  • (1)properties标签:可以引入外部properties配置文件内容,可以读取连接数据库的基本配置文件
  • (2)Mybatis与Spring进行整合时,读取配置文件的工作,一般交给Spring处理,此标签了解即可
  • (3)resource:引入类路径下的资源;url:网络路径或磁盘路径的内容
  • (4)使用实例:
1
2
3
4
5
配置文件
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8
jdbc.username=root
jdbc.password=123
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
全局配置文件
<!--properties,引入配置文件信息-->
<properties resource="./properties/jdbcConfig.properties"></properties>

<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<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>
</environment>
</environments>

二、settings(设定)

  • (1)settting:包含很多重要设定项
  • (2)setting:用来设定某一个设定项
    • name:设定项名
    • value:设定项取值
  • (4)使用实例
1
2
3
4
  <settings>
<!--启用驼峰命名-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

三、typeAliases(类型别名)

  • (1)typeAliases:为Java某个类型起别名
    • type:起别名类的全类名
    • alias:别名。若不添加此字段,默认为类名小写
  • (2)单个起别名实例:
  • 别名启用前
1
2
3
4
5
6
7
8
映射文件
<mapper namespace="properties.EmployeeMapper">
<select id="getEmpById" resultType="Dao.Employee">
select *
from tbl_employee
where id = #{id}
</select>
</mapper>
  • 别名启用后
1
2
3
4
全局配置文件--配置别名
<typeAliases>
<typeAlias type="properties.Employee" alias="employee"></typeAlias>
</typeAliases>
1
2
3
4
5
6
7
8
9
映射文件--引用别名
<mapper namespace="properties.EmployeeMapper">
<!--resultType:引用类型别名-->
<select id="getEmpById" resultType="employee">
select *
from tbl_employee
where id = #{id}
</select>
</mapper>
  • (3)批量起别名
    • typeAliases标签下的字标签
    • package:为指定包下的所有类起别名
      • name:指定包名(为当前包,以及下面所有的后带包的每一个类都起一个默认别名)
    • 在批量起别名的情况下,防止包与子包出现重名,可以在某个类使用@Alias(“别名”),自定义别名
1
2
3
4
全局配置文件--批量起别名
<typeAliases>
<package name="properties"/>
</typeAliases>
1
2
3
4
5
6
7
类--自定义批量别名
@Alias("OtherName")
public class Empioyee{
xxxxxxxx
xxxxxxxx
xxxxxxxx
}

四、typeHandlers(类型处理器)

  • (1)Java类型与数据库类型映射的桥梁
    • 以后细说

五、objectFactory(对象工厂)

  • (1)一般都不会修改此配置属性,都是使用默认方法
    • 不细说

六、plugin(插件)

  • (1)plugin对语句执行的偶一点进行拦截调用
    • 拦截方法:
      • Executor:执行器
      • ParameterHandler:参数处理器
      • ResultSetHandler:结果集处理器,拿出结果集并封装成JavaBean对象
      • StatementHandler:sql语句处理器
    • 以后细说

七、envrionments(环境)

  • (1)标签介绍
  • environments:存放多个环境
    • default:指定某个环境,来进行环境切换
    • environment:配置一个具体的环境信息,必须有两个标签
      • id:当前环境的唯一标识
      • transactionManager:事务管理器
        • type:事务管理器类型(JDBC、MANAGED)
          • 自定义事务管理器:类实现TransactionFactory接口,type指定为全类名
        • 事务管理:一般交给Spring来进行
      • dataSource:数据源
        • type:数据源类型(UNPOOLED、POOLED、JNDI)
          • 自定义连接池:类实现DataSoutceFactory接口,type是该类的全类名
  • (2)使用实例
    • 创建两个数据库环境,”mysql”和”Oracle”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
全局配置文件--环境配置
<environments default="mysql">
<!--mysql数据库环境-->
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
<!--Oracle数据库环境-->
<environment id="oracle">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${oracle.driver}"/>
<property name="url" value="${oracle.url}"/>
<property name="username" value="${oracle.username}"/>
<property name="password" value="${oracle.password}"/>
</dataSource>
</environment>
</environments>

八、databaseIdProvider(数据库厂商标识)

  • (1)标签介绍

    • databaseIdProvider:设置数据库厂商标识,来指定某条sql语句是指定数据来执行的
      • type=”DB_VENDOR”:得到数据库厂商标识(驱动自带),mybatis就能根据数据库厂商标识来执行
        • 举例驱动:MYSQL、Oracle、SQL Server
      • 也可以使用子标签property来为驱动起别名
  • (2)使用实例

1
2
3
4
5
6
7
全局配置文件--数据库厂商标识
<databaseIdProvider type="DB_VENDOR">
<!--为不同厂商起别名-->
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
<property name="SQL Server" value="sqlServer"/>
</databaseIdProvider>
1
2
3
4
5
6
7
8
9
映射文件--设定sql语句执行的数据库
<mapper namespace="properties.EmployeeMapper">
<!--databaseId:设置语句执行使用的数据库类型-->
<select id="getEmpById" resultType="employee" databaseId="mysql">
select *
from tbl_employee
where id = #{id}
</select>
</mapper>

九、mappers(映射器)

  • (1)标签介绍
  • mappers:存放一组映射文件注册
    • mapper:注册一个sql映射
      • resource:引用类路径下的sql映射文件
      • url:引用网络路径/磁盘路径下的sql映射文件
    • 开发中:一般将mapper映射文件,存放在mybatis.mapper的包中
  • (2)利用接口注册
    • 情况一:有sql映射文件
      • 创建一个接口,接口名与sql映射文件名一样,且放在同一目录下
      • 用mapper的class:类的全类名
    • 情况二:没有sql映射文件
      • 创建一个接口,在接口方法上添加相应的注解:
        • 增:@Insert(“sql语句”)
        • 删:@Delete(“sql语句”)
        • 改:@Update(“sql语句”)
        • 查:@Select(“sql语句”)
      • 用mapper的class:类的全类名
    • 使用推荐 :比较重要的Dao接口,sql写在xml配置文件中;不重要的,简单Dao接口为了快速开发,使用注解

情况二演示

1
2
3
4
5
接口
public interface EmployeeMapperAnnotation {
@Select("select * from tbl_employee where id=#{id}")
public Employee getEmpById(Integer id);
}
1
2
3
4
全局配置文件--注册接口
<mappers>
<mapper class="mapper.EmployeeMapperAnnotation"></mapper>
<mappers>
  • (3)批量注册
    • 要求和接口注册一样
    • 利用package标签
      • name:接口和映射文件所在的包名