文档章节

Mybatis应用学习(2)——配置文件编写

江左煤郎
 江左煤郎
发布于 2018/11/24 21:56
字数 1409
阅读 13
收藏 1

1. Mybatis的配置文件SqlMapConfig.xml

1.1 主要标签

  • properties(定义属性):用来定义一些固定属性值,以key-value形式存在

    •  MyBatis 将按照下面的顺序来加载属性:在 properties 元素体内定义的属性首先被读取;然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性;最后读取parameterType传递的属性,它会覆盖已读取的同名属性。建议不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中,而且在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX

    • 其应用如下:将数据库连接参数单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值。

      在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。将数据库连接参数只配置在db.properties中,原因是方便对参数进行统一管理,其它xml可以引用该db.properties。

      在sqlMapConfig.xml加载属性文件:

    •  

      子标签<property name="" value=""/>:定义添加属性值

       

       

  • settings(全局配置参数):mybatis框架在运行时通过该标签可以调整一些运行参数,比如开启二级缓存,全局参数将会影响mybatis的运行行为。

    • 参数配置子标签为<setting name="" value=""/>,name的值和value的值如下:

示例使用

<?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>
	<property name="" value=""/>
	<settings>
<!--开启延迟加载-->
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="false"/>
	</settings>
</configuration> 

 

  • typeAliases(类型别名):用来给指定的类取别名,在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。

    • 默认支持的类型与别名:不需要专门配置,直接应用即可

      别名

      映射的类型

      _byte

      byte

      _long

      long

      _short

      short

      _int

      int

      _integer

      int

      _double

      double

      _float

      float

      _boolean

      boolean

      string

      String

      byte

      Byte

      long

      Long

      short

      Short

      int

      Integer

      integer

      Integer

      double

      Double

      float

      Float

      boolean

      Boolean

      date

      Date

      decimal

      BigDecimal

      bigdecimal

      BigDecimal

    • 针对自定义的pojo类型需要配置别名:所使用的标签主要如下
      	<typeAliases>
      		<!-- 针对单个类的别名配置:type写类的全限定路径,alias写别名-->
      		<typeAlias type="" alias=""/>
      		<!-- 批量别名配置:name写包的全限定路径,mybatis会自动生成别名,别名为包下每个类的类名-->
      		<package name=""/>
      	</typeAliases>

       

  • typeHandlers(类型处理器):Mybatis通过类型处理器来完成在数据库数据类型和java类型之间的转换,比如从数据库中的varchar转为java中的String类型,通常情况下Mybatis中默认支持的类型处理器可以满足开发需求,所以一般不需要自定义类型处理器

    • 类型处理器

      Java类型

      JDBC类型

      BooleanTypeHandler

      Booleanboolean

      任何兼容的布尔值

      ByteTypeHandler

      Bytebyte

      任何兼容的数字或字节类型

      ShortTypeHandler

      Shortshort

      任何兼容的数字或短整型

      IntegerTypeHandler

      Integerint

      任何兼容的数字和整型

      LongTypeHandler

      Longlong

      任何兼容的数字或长整型

      FloatTypeHandler

      Floatfloat

      任何兼容的数字或单精度浮点型

      DoubleTypeHandler

      Doubledouble

      任何兼容的数字或双精度浮点型

      BigDecimalTypeHandler

      BigDecimal

      任何兼容的数字或十进制小数类型

      StringTypeHandler

      String

      CHARVARCHAR类型

      ClobTypeHandler

      String

      CLOBLONGVARCHAR类型

      NStringTypeHandler

      String

      NVARCHARNCHAR类型

      NClobTypeHandler

      String

      NCLOB类型

      ByteArrayTypeHandler

      byte[]

      任何兼容的字节流类型

      BlobTypeHandler

      byte[]

      BLOBLONGVARBINARY类型

      DateTypeHandler

      Datejava.util

      TIMESTAMP类型

      DateOnlyTypeHandler

      Datejava.util

      DATE类型

      TimeOnlyTypeHandler

      Datejava.util

      TIME类型

      SqlTimestampTypeHandler

      Timestampjava.sql

      TIMESTAMP类型

      SqlDateTypeHandler

      Datejava.sql

      DATE类型

      SqlTimeTypeHandler

      Timejava.sql

      TIME类型

      ObjectTypeHandler

      任意

      其他或未指定类型

      EnumTypeHandler

      Enumeration类型

      VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。

  • objectFactory(对象工厂)

  • plugins(插件):添加一些插件,比如分页插件

  • environments(环境集合属性对象)

    • environment(环境子属性对象)
    • transactionManager(事务管理)
    • dataSource(数据源)
  • mappers(映射器):该标签用于加载映射文件,子标签只有<mapper/>

    • 通过子标签<mapper/>中的resource属性指定加载单个映射文件:注意,路径填写是在类路径(也就是classpath),写相对路径
      	<mappers>
      		<mapper resource="mapper/UserMapper.xml"/>
      	</mappers>

       

    • 通过子标签<mapper/>中的class属性指定加载单个映射文件:注意,该方法只针对Mybatis通过Mapper接口代理开发有效,所以要满足Mapper代理开发的规范,路径填写Mapper接口的全限定路径,并且要将UserMapper接口对应的UserMapper.xml映射文件放在同一个包下,而且xml文件名和mapper接口名相同
      	<mappers>
      		<mapper class="dao.UserMapper"/>
      	</mappers>

       

    • 通过子标签<package/>中的name属性指定加载批量映射文件:注意,该方法只针对Mybatis通过Mapper接口代理开发有效,所以要满足Mapper代理开发的规范,并且要将Mapper接口对应的Mapper.xml映射文件放在同一个包下,而且xml文件名和mapper接口名相同,路径填写所在的包的全限定路径
      	<mappers>
      <!--替换
          <mapper resource="mapper.Usermapper"/>
      	<mapper resource="mapper.NoteBookMapper"/>
      -->
      		<package name="mapper"/>
      	</mappers>

       

© 著作权归作者所有

江左煤郎

江左煤郎

粉丝 26
博文 86
码字总数 220642
作品 0
西安
后端工程师
私信 提问
早前学习Java记录

Spring 对 iBATIS 的支持】 Spring 通过 DAO 模式,提供了对 iBATIS 的良好支持。 SqlMapClient:是 iBATIS 中的主要接口,通过 xml 配置文件可以让 Spring 容器来管理 SqlMapClient 对象的创...

大风厂蔡成功
2016/07/10
43
0
Mybatis应用学习(6)——Spring框架整合与逆向工程

与Spring框架整合 1. 整合思路: 需要spring通过单例方式管理SqlSessionFactory。 spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)...

江左煤郎
2018/11/27
0
0
回顾一下MyBatis逆向工程——自动生成代码

⭐⭐⭐⭐⭐最最最最最重要的事情: 我自己总结的Java学习的系统知识点以及面试问题,目前已经开源,会一直完善下去,欢迎建议和指导欢迎Star: https://github.com/Snailclimb/Java-Guide 我...

snailclimb
2018/07/12
0
0
Java Web学习计划

--- 本月为入门阶段,从零开始,一步一步的做出一个实用的网站。 深入学习Java语言,初步掌握前端技术,使用JSP和MySQL完成一个简单的网站 第1周 Java高级编程学习目标:
1.深入了解JDK环境...

SVD
2016/12/01
55
0
Spring Boot 学习资料收集

导读: 从第一次接触Spring Boot 至今已经有半年多了,在这期间也浏览了许多和Spring Boot 相关的书籍及文章,公司里面的许多项目也一直在使用Spring Boot。 关于Spring Boot的一些看法: Sp...

yangrd
2017/03/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【redis】spring boot利用redis的Keyspace Notifications实现消息通知

前言 需求:当redis中的某个key失效的时候,更新key对应数据在数据库的状态 1、修改redis.conf 安装的redis服务默认是: notify-keyspace-events "",修改成 notify-keyspace-events Ex; 位置...

时刻在奔跑
3分钟前
0
0
IT基础设施中的人工智能可以改变工作的方式

  如今,减少人工智能的宣传和炒作已成为IT领导者的主要工作。提供有关人工智能在何处以及如何将其添加到IT基础设施的深入指南将会提供帮助。   很多技术提供商正在投入巨资,将人工智能...

琴殇的
4分钟前
0
0
vue cli3创建测试打包环境(通过development、production、alpha指定不同的接口地址)

参考地址 前言:项目一般有开发环境,测试环境,生产环境;vue cli内置有开发和生产环境,可以用process.env.NODE_ENV区分,有时候我们和后台同事需要本地连接调试代码,又需要连接测试环境调...

hkaikai
10分钟前
1
0
360安全浏览器龙芯、飞腾、兆芯版

主页https://browser.360.cn/se/linux/ 龙芯 http://down.360safe.com/gc/browser360-cn-stable-10.0.2001.0-1.mips64el.rpm http://down.360safe.com/gc/browser360-cn-stable_10.0.2001.0......

gugudu
10分钟前
21
0
访问JSP时,浏览器显示为

问题: <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param>......

器石_
14分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部