人生难得几回搏,此时不搏待何时。这篇文章主要讲述#yyds干货盘点# Mybatis 的 XML 配置相关的知识,希望能为你提供帮助。
<
!--配置-->
<
configuration>
<
!--属性-->
<
properties>
<
!--设置-->
<
settings>
<
!--类型别名-->
<
typeAliases>
<
!--类型处理器-->
<
typeHandlers>
<
!--对象工厂-->
<
objectFactory>
<
!--插件-->
<
plugins>
<
!--环境配置-->
<
environments>
<
!--数据库厂商标识-->
<
databaseIdProvider>
<
!--映射器-->
<
mappers>
<
/configuration>
<
!-- 注意元素节点的顺序!顺序不对会报错 -->
Properties属性可以在外部文件进行配置,通过
&
lt;
properties resource="jdbc.properties"/&
gt;
引入外部文件url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&
characterEncoding=utf8
driver=com.mysql.jdbc.Driver
username=root
password=123456
<
properties resource="jdbc.properties"/>
<
!--环境配置-->
<
environments default="development">
<
environment id="development">
<
transactionManager type="JDBC"/>
<
dataSource type="POOLED">
<
property name="driver" value="https://www.songbingjia.com/android/${driver}"/>
<
property name="url" value="https://www.songbingjia.com/android/${url}"/>
<
property name="username" value="https://www.songbingjia.com/android/${username}"/>
<
property name="password" value="https://www.songbingjia.com/android/${password}"/>
<
/dataSource>
<
/environment>
<
/environments
也可以在 properties 元素的子元素中设置,并可以进行动态替换
<
!--环境配置-->
<
environments default="development">
<
environment id="development">
<
transactionManager type="JDBC"/>
<
dataSource type="POOLED">
<
property name="driver" value="https://www.songbingjia.com/android/com.mysql.jdbc.Driver"/>
<
property name="url" value="https://www.songbingjia.com/android/jdbc:mysql://localhost:3306/mybatis?useUnicode=true&
amp;
characterEncoding=utf8"/>
<
property name="username" value="https://www.songbingjia.com/android/root"/>
<
property name="password" value="https://www.songbingjia.com/android/123456"/>
<
/dataSource>
<
/environment>
<
/environments>
Settings常用的设置
设置名 | 描述 | 有效值 | 默认值 |
---|---|---|---|
cacheEnabled | 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。 | true | false | true |
lazyLoadingEnabled | 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 | true | false | false |
logImpl | 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 | SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING | 未设置 |
<
settings>
<
setting name="cacheEnabled" value="https://www.songbingjia.com/android/true"/>
<
setting name="lazyLoadingEnabled" value="https://www.songbingjia.com/android/true"/>
<
setting name="multipleResultSetsEnabled" value="https://www.songbingjia.com/android/true"/>
<
setting name="useColumnLabel" value="https://www.songbingjia.com/android/true"/>
<
setting name="useGeneratedKeys" value="https://www.songbingjia.com/android/false"/>
<
setting name="autoMappingBehavior" value="https://www.songbingjia.com/android/PARTIAL"/>
<
setting name="autoMappingUnknownColumnBehavior" value="https://www.songbingjia.com/android/WARNING"/>
<
setting name="defaultExecutorType" value="https://www.songbingjia.com/android/SIMPLE"/>
<
setting name="defaultStatementTimeout" value="https://www.songbingjia.com/android/25"/>
<
setting name="defaultFetchSize" value="https://www.songbingjia.com/android/100"/>
<
setting name="safeRowBoundsEnabled" value="https://www.songbingjia.com/android/false"/>
<
setting name="mapUnderscoreToCamelCase" value="https://www.songbingjia.com/android/false"/>
<
setting name="localCacheScope" value="https://www.songbingjia.com/android/SESSION"/>
<
setting name="jdbcTypeForNull" value="https://www.songbingjia.com/android/OTHER"/>
<
setting name="lazyLoadTriggerMethods" value="https://www.songbingjia.com/android/equals,clone,hashCode,toString"/>
<
/settings>
TypeAliases类型别名是为 java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。
- 扫描类使用别名
< typeAliases> < typeAlias type="pojo.User" alias="User"/> < /typeAliases>
当这样配置时,User
可以用在任何使用pojo.User
的地方。
- 扫描包
< typeAliases> < package name="pojo"/> < /typeAliases>
每一个在包pojo
中的 JavaBean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。若有注解,则别名为其注解值。
- 在类上使用注解
import org.apache.ibatis.type.Alias; @Alias("user") public class User {private int id; private String name; private String password; }
别名 | 映射的类型 |
---|---|
_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 |
object | Object |
map | Map |
hashmap | HashMap |
list | List |
arraylist | ArrayList |
collection | Collection |
iterator | Iterator |
<
!--环境配置-->
<
environments default="development">
<
!--development环境-->
<
environment id="development">
<
transactionManager type="JDBC"/>
<
dataSource type="POOLED">
<
property name="driver" value="https://www.songbingjia.com/android/${driver}"/>
<
property name="url" value="https://www.songbingjia.com/android/${url}"/>
<
property name="username" value="https://www.songbingjia.com/android/${username}"/>
<
property name="password" value="https://www.songbingjia.com/android/${password}"/>
<
/dataSource>
<
/environment>
<
!--test-->
<
environment id="test">
<
transactionManager type="JDBC"/>
<
dataSource type="POOLED">
<
property name="driver" value="https://www.songbingjia.com/android/${driver}"/>
<
property name="url" value="https://www.songbingjia.com/android/${url}"/>
<
property name="username" value="https://www.songbingjia.com/android/${username}"/>
<
property name="password" value="https://www.songbingjia.com/android/${password}"/>
<
/dataSource>
<
/environment>
<
/environments>
子元素节点:environment
- transactionManager 事务管理器
< !-- 语法 --> < transactionManager type="[ JDBC | MANAGED ]"/>
- dataSource 数据源
使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。数据源是必须配置的。有三种内建的数据源类型:
type="[UNPOOLED|POOLED|JNDI]")
- unpooled:这个数据源的实现只是每次被请求时打开和关闭连接。
- pooled:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来 , 这是一种使得并发 Web 应用快速响应请求的流行处理方式。
- jndi:这个数据源的实现是为了能在如 Spring 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。
- 使用相对于类路径的资源引用
< mappers> < mapper resource="mapper/UserMapper.xml"/> < /mappers>
- 类名
< !--需要配置文件名称和接口名称一致,并且位于同一目录下--> < mappers> < mapper class="mapper.UserMapper"/> < /mappers>
- 包名
< !--需要配置文件名称和接口名称一致,并且位于同一目录下--> < mappers> < package name="mapper"/> < /mappers>
<
?xml version="1.0" encoding="UTF-8" ?>
<
!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<
mapper namespace="mapper.UserMapper">
<
insert id="addUser" parameterType="pojo.User">
insert into user(id, name, password)
values (#{id}, #{name}, #{password})
<
/insert>
<
/mapper>
- namespace 的命名必须跟某个接口同名
- 接口中的方法与映射文件中sql语句id应该一一对应
- namespace命名规则 : 包名+类名
推荐阅读
- 下单延迟10s撤单性能测试#yyds干货盘点#
- #yyds干货盘点#i.MX8 OTA过程记录
- HarmonyOS Sample 之AI能力之NLU引擎服务
- Spring认证中国教育管理中心-Spring Data MongoDB教程七
- 深入理解Linux文件系统与日志分析
- #yyds干货盘点#利用Matplotlib库画图
- #yyds干货盘点#带大家认识Golang中的切片数据类型
- 开源IT服务管理工具iTOP安装实践
- #yyds干货盘点# 4. 列表一学完,Python 会一半,滚雪球学 Python