03_mybatis配置文件详解

摘要:
配置>--加载属性文件-->typeAliastype=“com.mybatis.po.User”alias=“User”>&书信电报;批别名定义mybatis——批别名定义mybatis;packagename=“com.mybatis.po”>&书信电报;
1. SqlMapConfig.xml

mybatis全局配置文件SqlMapConfig.xml,配置内容如下:

*properties(属性)

setting(全局配置参数)

typeAliases(类型别名)

typeHandlers(类型处理器)

plugins(插件)

enviroments(环境集合对象)

enviroment(环境子属性对象)

transactionManager(事务管理)

datasource(数据源)

mappers(映射器)

1.1 properties属性

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

在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。

db.properties:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybaties?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

在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>
    <!--加载属性文件-->
    <properties resource="com/mybatis/config/db.properties"></properties>
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    .....
    .....

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

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

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

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

建议:不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX

1.2 settings全局配置参数

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

比如:开启二级缓存、开启延迟加载、全局参数将会影响mybatis

在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.3 typeAliases(别名)

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

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

1)Mybatis默认支持的别名:

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal

2)自定义别名

单个别名定义:

 <!--别名-->
    <typeAliases>
        <!--针对单个别名定义-->
       <typeAlias type="com.mybatis.po.User" alias="user"></typeAlias>
    </typeAliases>

批量别名定义:批量别名定义mybatis:自动扫描包中的po类,别名就是类名(首字母大写小写都可以)

  <!--别名-->
    <typeAliases>
        <!--批量别名定义
        mybatis:自动扫描包中的po类,别名就是类名(首字母大写小写都可以)
        -->
        <package name="com.mybatis.po"></package>

    </typeAliases>

引用别名

<select id="findUserByName" parameterType="java.lang.String" resultType="user">
         SELECT * FROM USER WHERE USERNAME LIKE '%${value}%'
    </select>

1.4 typeHandlers(类型处理器)

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

mybatis支持类型处理器:

类型处理器Java类型JDBC类型
BooleanTypeHandlerBoolean,boolean任何兼容的布尔值
ByteTypeHandlerByte,byte任何兼容的数字或字节类型
ShortTypeHandlerShort,short任何兼容的数字或短整型
IntegerTypeHandlerInteger,int任何兼容的数字和整型
LongTypeHandlerLong,long任何兼容的数字或长整型
FloatTypeHandlerFloat,float任何兼容的数字或单精度浮点型
DoubleTypeHandlerDouble,double任何兼容的数字或双精度浮点型
BigDecimalTypeHandlerBigDecimal任何兼容的数字或十进制小数类型
StringTypeHandlerStringCHAR和VARCHAR类型
ClobTypeHandlerStringCLOB和LONGVARCHAR类型
NStringTypeHandlerStringNVARCHAR和NCHAR类型
NClobTypeHandlerStringNCLOB类型
ByteArrayTypeHandlerbyte[]任何兼容的字节流类型
BlobTypeHandlerbyte[]BLOB和LONGVARBINARY类型
DateTypeHandlerDate(java.util)TIMESTAMP类型
DateOnlyTypeHandlerDate(java.util)DATE类型
TimeOnlyTypeHandlerDate(java.util)TIME类型
SqlTimestampTypeHandlerTimestamp(java.sql)TIMESTAMP类型
SqlDateTypeHandlerDate(java.sql)DATE类型
SqlTimeTypeHandlerTime(java.sql)TIME类型
ObjectTypeHandler任意其他或未指定类型
EnumTypeHandlerEnumeration类型VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。

1.5 mappers(映射配置)

通过resource加载单个映射文件

<!--加载映射文件-->
    <mappers>
        <mapper resource="com/mybatis/config/mapper/UserMapper.xml"></mapper>
    </mappers>

通过mapper接口加载单 个mapper

​ 通过mapper接口加载映射文件,遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在同一个目录中,按照这个规范:将mapper.java和mapper.xml放在一个目录中,且同名。

在这里插入图片描述

<!--加载映射文件-->
    <mappers>
        <mapper class="com.mybatis.mapper.UserMapper"></mapper>
    </mappers>

批量加载mapper(推荐使用)

指定mapper接口的包名,mybatis自动扫描包下所有mapper接口进行加载;

遵循规范:使用mapper代理开发、mapper.java和mapper.xml在同一个包中、mapper接口类名和mapper.xml映射文件名称保持一致

<!--加载映射文件-->
    <mappers>
        <!--批量加载mapper映射文件-->
        <package name="com.mybatis.mapper"/>
    </mappers>

…补充中

免责声明:文章转载自《03_mybatis配置文件详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇AndroidStudio技巧之copy工程八、设置HTTP应答头 (基础教程8)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

DevExpress中barManager下的toolbar如何在panel中显示

如题,我的Dev Toolbar需要在一个pannel中显示,并且居于最顶部。可是好像默认情况下toolbar都是在窗体的最顶部的,如何设置才能使其位于一个panel的最顶部呢? 解决方案:经过测试,发现只要更改barManager的form属性即可。不过有一点需要注意:  再设计状态下依然是位于最顶部。不过运行之后就可以看到变化了。 出处:https:/...

Springboot的开发环境(dev)、测试环境(beta)和生产环境(product)打包部署

1、在项目开发过程中需要考虑不同的运行环境:开发环境(dev)、测试环境(beta)和生产环境(product)。在以往的开发过程中通常使用Maven构建工具进行控制,但却需要进行大量的配置。SpringBoot考虑到此类问题,专门设计了profile支持。   备注:尤其是项目开发完毕,在正式环境部署的时候出现问题,进行本地调试的时候就头疼了,因为正式环...

xml之XSLT

 1、XSLT是什么  XSLT是XSL的子集,XSL是样式表。XSLT的作用:将XML文档转化成HTML,做的是中间转换者。  而主要需要学习的是XSLT(XSLTransformation)。  2、转换过程   3、XSL样式表的表的结构 引用XSL样式的XML文件的引用方式:   4、XSLT详细结构 1》有独立的命名空间 2》要执行XSL...

myBatis 切换数据源(spring事务)理解

1. mybatis (SqlSessionTemplate)的动态代理   a) sqlSession的结构      b)SqlSession 结构 public class SqlSessionTemplate implements SqlSession { //代理对象 ------1 private final SqlSession...

用友GRP-u8 XXE 漏洞复现

0x00 漏洞描述  用友GRP-u8存在XXE漏洞,该漏洞源于应用程序解析XML输入时没有进制外部实体的加载,导致可加载恶意外部文件。 0x01 漏洞利用条件 无需登录 0x02 漏洞复现 POC: POST /Proxy HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Age...

代码重构封装参数

代码中如果有范围参数: public void GetInfo(datetime beginTime,datetime endTime){ if(beginTime>'2012-01-01'&& endTime<'2012-12-30'){     //处理代码 } else{   //处理代码 } } 重构方式:封装时间范...