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.Driver
jdbc.url = jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
jdbc.username=root
jdbc.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>

【MyBatis笔记】07-MyBatis 核心配置文件相关推荐

  1. Mybatis—代理开发和核心配置文件深入

    代理开发方式介绍 采用 Mybatis 的代理开发方式实现 DAO 层的开发,这种方式是我们后面进入企业的主流. Mapper 接口开发方法只需要程序员编写Mapper 接口(相当于Dao 接口),由 ...

  2. 配置MyBatis映射文件以及核心配置文件模板

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.db.properties模板 二.映射文件mapper.xml模板 三.---------MyBatis核心文件 ...

  3. 【Mybatis】SqlMapConfig.xml核心配置文件

    1.properties 属性 SqlMapConfig.xml可以引用java属性文件中的配置信息如下: 在classpath下定义db.properties文件(key-value形式注意不要出现 ...

  4. 【Mybatis笔记】mybatis实现mysql增删改查

    namespace中的报名和Dao/mapper接口一致 id:对应namespace中方法名 resultType:sql语句执行的返回值 parameterType:参数类型 只需要改动接口,接口 ...

  5. 【SSM框架系列】Mybatis映射配置文件与核心配置文件深入

    传统开发方式Dao层实现 编写UserDao接口 public interface UserDao {List<User> findAll() throws IOException;} 编 ...

  6. java元婴期(23)----java进阶(mybatis(2)---mapper代理mybatis核心配置文件输入输出映射)

    1.mapper代理 1.mybatis开发dao的方法----引入(为啥要使用mapper代理) 1.SqlSession使用范围 1.SqlSessionFactoryBuilder 通过SqlS ...

  7. Mybatis中的核心配置文件SqlMapConfig.xml详细介绍

    一.properties(属性) 可以引用java属性文件中的配置信息如下 jdbc.properties代码如下: jdbc.driver=com.mysql.jdbc.Driver jdbc.ur ...

  8. MyBatis笔记——配置文件完成增删改查

    l 完成品牌数据的增删改查操作 § 要完成的功能列表清单:□ 查询® 查询所有数据® 查看详情® 条件查询□ 添加□ 修改® 修改全部字段® 修改动态字段□ 删除® 删除一个® 批量删除准备环境:§ ...

  9. MyBatis复习(二):mybatis-config.xml核心配置文件

    XML核心配置文件 项目的开发一般都会有不同的环境:开发环境 / 生产环境 / 测试环境.我们通过environments的default属性用于指定环境类型 dataSource的type属性用于指 ...

最新文章

  1. kettle mysql 配置_Kettle数据库配置抽离
  2. 代码改动两三行,AI数据秒换隐身衣!隐私计算+AI?中科院博士实践分享一键切换...
  3. 运用计算机的产品设计,计算机在产品设计的应用论文
  4. Why product sales area is not replicated to CRM
  5. 浮点高精求和(洛谷P2393题题解,弃坑Java拥抱C++)
  6. 浅谈特征选择的原理和Python实现
  7. 切换图片 ImageSwitcher
  8. python异常处理有什么意义_怎么学好Python异常处理 五种处理机制是什么
  9. 2016.9.18 --- Shenyang ol
  10. python抠出图片人像_不会用Photoshop抠图?Python助你一键“除”人!
  11. python输入一个整数和一个字符_【python零基础入门】基础语法之变量、字符串、数字、规则。...
  12. 根据火车的出发时间和到达时间,编写程序计算整个旅途所用的时间。比如G198次列车从青岛站出发时间为16:00,到达北京南站的时间为20:40,则整个旅途所用时间为04:40。
  13. 使用docker安装拼音分词器
  14. 【金猿产品展】星环KunDB ——助力企业数字化转型的高性能分布式交易型数据库...
  15. 转载:浅谈Session与Cookie的区别与联系
  16. 《你好,数智新世界》系列访谈 对话数睿数据总裁刘超|企业级无代码赋能软件产业变革...
  17. ROS 相关学习资源汇总
  18. Python 之并发编程之manager与进程池pool
  19. 线上故障排查全套路盘点
  20. 工作分解结构 WBS

热门文章

  1. 视频剪辑用i7,8600还是r5,3600好些?
  2. ubuntu 15.04安装VMware11
  3. python chardet_Python - chardet
  4. 使用Microsoft数据迁移助手在Oracle数据库和SQL Server之间迁移的具体示例
  5. 适合初学者的sql_适用于初学者SQL多重连接示例
  6. 为什么SQL Server DBA对Python感兴趣?
  7. git新手配置(ios环境)
  8. 【XSY2307】树的难题
  9. delphi 用户可以点击格式修改进行模板修改
  10. maven(11)-聚合多模块