• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析

Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析

作者:Joanna.Yan 字体:[增加 减小] 来源:互联网 时间:2017-05-28

Joanna.Yan 通过本文主要向大家介绍了Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发

MyBatis的全局配置文件SqlMapConfig.xml,配置内容和顺序如下:

properties(属性)

setting(全局配置参数)

typeAliases(类名别名)

typeHandlers(类名处理器)

objectFactory(对象工厂)

plugins(插件)

environments(环境集合属性对象)

  environment(环境子属性对象)

  transationManager(事务管理)

  dataSource(数据源)

mappers(映射器)

1.properties(属性)

需求:

将数据库连接参数单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值。在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。

将数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其它xml可以引用该db.properties。

在classpath下定义db.properties文件:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/mybatisdemo
jdbc.username=root
jdbc.password=
</div>

在SqlMapConfig.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>
  <!-- 加载数据库文件db.properties -->
  <properties resource="db.properties">
   <!-- properties中陪可以配置一些属性名和属性值,此处的优先加载 -->
  <!-- <property name="driver" value=""/> -->
  </properties>
 
  <!-- 和Spring整合后,environments配置将废除 -->
 <environments default="development">
  <environment id="development">
   <!-- 使用JDBC事务管理,事务控制由mybatis管理 -->
   <transactionManager type="JDBC"/>
   <!-- 数据库连接池,由mybatis管理 -->
   <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>
 </configuration>
</div>

properties特性:

注意:MyBatis将按照下面的顺序来加载属性:

(1)在properties元素体内定义的属性首先被读取。

(2)然后会读取properties元素中resourse或url加载的属性,它会覆盖已读取的同名属性。

(3)最后读取parameterType传递的属性,它会覆盖已读取的同名属性。

所以这里可能就会存在一个问题:假如UserMapper.xml中的有一个statement的入参名为name,

而db.properties中也有一个参数名叫name。

那最终UserMapper.xml中的select会读取到name=root,而不是用户传入的值。

建议:

不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。

在properties文件中定义属性名要有一定的特殊性,如:xxx.xxx.xxx,jdbc.url,jbdc.username。

2.settings(全局参数配置)

MyBatis框架在运行时可以调整一些运行参数。

比如:开启二级缓存、开启延迟加载......

全局参数将会影响MyBatis的运行行为。

 

3.typeAliases(别名)重点

3.1需求

在mapper.xml中,定义很多的statement,而statement需要parameterType指定输入参数的类型,需要resultType指定输出结果的映射类型。

如果在指定类型时输入类型全路径,不方便进行开发。可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。

3.2mybatis默认支持别名

3.3自定义别名

3.3.1单个别名定义

<!-- 单个别名定义: --> 
 <typeAliases>
  <typeAlias type="joanna.yan.mybatis.entity.User" alias="user"/>
 </typeAliases>
</div>

引用别名:

<select id="findUserById" parameterType="int" resultType="user">
  select * from user where id=#{id}
</select>
</div>

3.3.2批量定义别名(常用)

<!-- 
  批量别名的定义:
  package:指定包名,mybatis会自动扫描包中的pojo类,自定义别名,别名就是类名(首字母大写或小写都可以) -->
  <typeAliases>
   <package name="joanna.yan.mybatis.entity"/>
   <!-- <package name="其它包名"/> -->
  </typeAliases>
</div>

4.typeHandlers(类型处理器)

MyBatis中通过typeHandlers完成jbdc类型和java类型的转换。通常情况下,MyBatis提供的类型处理器满足日常需要,不需要自定义。

5.mappers(映射配置)

5.1通过resource加载单个文件

<!-- 加载映射文件 -->
 <mappers>
  <!-- 通过resource方法一次加载一个映射文件 -->
  <mapper resource="mapper/UserMapper.xml"/>
   </mappers>
</div>

5.2通过mapper接口加载单个mapper

<!-- 加载映射文件 -->
 <mappers>
  <!-- 
  通过mapper接口加载单个映射配置文件
   遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;
   以上规范的前提是:使用的是mapper代理方法;
   -->
  <mapper class="joanna.yan.mybatis.mapper.UserMapper"/>
 </mappers>
</div>

按照上边的规范,将mapper.java和mapper.xml放在一个目录,且同名。

5.3批量加载mapper(推荐使用)

<mappers>
  <!-- 批量加载映射配置文件,mybatis自动扫描包下的mapper接口进行加载;
   遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;
   以上规范的前提是:使用的是mapper代理方法;
   -->
  <package name="joanna.yan.mybatis.mapper"/>
 </mappers>
</div>

以上所述是小编给大家介绍的Spring+SpringMVC+MyBatis深入学习及搭建(三)之MyBatis全局配置文件解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-28Java定时任务详解
  • 2017-05-28全面解析SpringBoot自动配置的实现原理
  • 2017-05-28Java中sleep()与wait()的区别总结
  • 2017-05-28SpringBoot创建JSP登录页面功能实例代码
  • 2017-05-28Spring Boot 启动加载数据 CommandLineRunner的使用
  • 2017-05-28java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解
  • 2017-05-28Java 序列化和反序列化实例详解
  • 2017-05-28微信开发准备第一步 Maven仓库管理新建WEB项目
  • 2017-05-28详解hibernate双向多对多关联映射XML与注解版
  • 2017-05-28JAVA简单实现MD5注册登录加密实例代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Java中四种访问权限资料整理
    • 详解Spring boot上配置与使用mybatis plus
    • Linux下用java -jar运行可执行jar包的方法教程
    • 详解springboot整合mongodb
    • Spring与Spring boot的区别介绍
    • Java中List Set和Map之间的区别_动力节点Java学院整理
    • SpringMVC中使用bean来接收form表单提交的参数时的注意点
    • Java常用数字工具类 大数乘法、加法、减法运算(2)
    • 详解SpringBoot AOP 拦截器(Aspect注解方式)
    • Mybatis 中的一对一,一对多,多对多的配置原则示例代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有