亲宝软件园·资讯

展开

MyBatis XML配置 详解MyBatis XML配置解析

Baret H ~ 人气:0
想了解详解MyBatis XML配置解析的相关内容吗,Baret H ~在本文为您仔细讲解MyBatis XML配置的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:MyBatis,XML配置,下面大家一起来学习吧。

MyBatis核心配置文件

<?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>
 <environments default="development">
 <environment id="development">
  <transactionManager type="JDBC"/>
  <dataSource type="POOLED">
  <property name="driver" value="${driver}"/>
  <property name="url" value="${url}"/>
  <property name="username" value="${username}"/>
  <property name="password" value="${password}"/>
  </dataSource>
 </environment>
 </environments>
 <mappers>
 <mapper resource="org/mybatis/example/BlogMapper.xml"/>
 </mappers>
</configuration>

image-20200727185227378

注意:接下来所有的配置,都要按照上图的顺序进行配置,否则会出错

1. 环境配置(environments)

MyBatis 可以配置成适应多种环境,但每个 SqlSessionFactory 实例只能选择一种环境

environments 元素定义了如何配置环境。

其中可以嵌套多个环境

<environments default="development">
 
<!--环境1-->
 <environment id="development">
	<!--事务管理器-->
 <transactionManager type="JDBC">
  <property name="..." value="..."/>
 </transactionManager>
	<!--数据源-->
 <dataSource type="POOLED">
  <property name="driver" value="${driver}"/>
  <property name="url"	 value="${url}"/>
  <property name="username" value="${username}"/>
  <property name="password" value="${password}"/>
 </dataSource>
 </environment>
 
<!--环境2-->
 <environment>
  ...
 </environment>
 
<!--环境3-->
 <environment>
  ...
 </environment>

</environments>

子元素节点:environment

环境 ID:每个环境都有对应的一个环境ID

事务管理器(transactionManager)

数据源(dataSource)

数据源也有很多第三方的实现:dbcp、c3p0、druid等等…

2. 属性(properties)

我们利用Properties属性来实现应用配置文件

这些属性可以在外部进行配置,并可以进行动态替换。

方式一:直接在Mybatis核心配置文件中配置这些属性(我们先前的方法)

image-20200727183807575

方式二:在 properties 元素的子元素中设置

编写 config.properties

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSH=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=200024

在核心配置文件中引入

<?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="config.properties"/>

 <environments default="development">
  <environment id="development">
   <transactionManager type="JDBC"/>
   <dataSource type="POOLED">
    <!--这里就不用配置属性了,默认即可-->
    <property name="driver" value="${driver}"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>
   </dataSource>
  </environment>
 </environments>
</configuration>

引入外部文件的同时,也可以在其中增加一些属性配置

优先级问题:首先读取在 properties 元素体内指定的属性

<properties resource="config.properties">
 <property name="username" value="root"/>
 <property name="password" value="200024"/>
</properties>

比如config.properties中的数据库连接密码正确,但是properties 元素体内的密码不正确,则会报错,因为优先读取properties 元素体内指定的属性

3. 类型别名(typeAliases)

注意位置顺序

方式一:通过typeAlias起别名

<typeAliases>
 <typeAlias type="pojo.User" alias="User"/>
</typeAliases>

type的值为指定Java类名alias为新起的别名

方式二:通过package起别名

也可以指定一个包名,MyBatis 会在包名下面搜索对应的实体类

image-20200727185339263

<typeAliases>
 <package name="pojo"/>
</typeAliases>

每一个在包 pojo 中的 实体类,在没有注解的情况下,会使用 实体类 的首字母小写的非限定类名来作为它的别名。 比如 pojo.User 的别名为 user;若有注解,则别名为其注解值。

@Alias("hello")
public class User {
 ... 
}

此时,别名为hello

image-20200723183237742 

建议

下面是一些为常见的 Java 类型内建的类型别名。它们都是不区分大小写的,注意,为了应对原始类型的命名重复,采取了特殊的命名风格。

别名 映射的类型
_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

4. 设置(settings)

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为

设置(settings)查看帮助文档https://mybatis.org/mybatis-3/zh/index.html

最常用日志

4.1、日志工厂

如果一个数据库操作出现了异常,我们需要排错,日志是最好的助手!

image-20200725210421111

logImpl

在MyBatis核心配置文件中配置我们的日志

注意大小写问题!!!不要写错!!

注意位置顺序问题

<settings>
 <!--标准日志工厂实现-->
 <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

然后运行我们的测试类,发现多了很多内容,这就是我们的日志

image-20200725210826642

4.2、LOG4J

什么是LOG4J?

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等我们也可以控制每一条日志的输出格式通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码

使用步骤

导包

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
 <groupId>log4j</groupId>
 <artifactId>log4j</artifactId>
 <version>1.2.17</version>
</dependency>

配置log4j.properties

#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file

#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/zsr.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

在MyBatis核心配置文件中配置我们LOG4J

<settings>
 <setting name="logImpl" value="LOG4J"/>
</settings>

测试

image-20200725214345178

同时在当前项目目录下生成了zsr.log文件,这里面保存了我们的日志信息

这就是我们在log4j.properties进行的设置,我们同样可以设置其他的内容

image-20200727190136249

IDEA可能出现打不开的情况,我们将其换成.txt格式就可以打开了

image-20200726114330721

image-20200726112101132

简要使用

要在使用LOG4J的类中,导入包 org.apache.log4j.Logger

日志对象,参数为当前类的class

static Logger logger = Logger.getLogger(UserMapperTest.class);

image-20200725225401808

编写测试方法,三种常见日志级别

@Test
public void testLog4j() {
 logger.info("info:进入了testLog4j方法");
 logger.debug("debug:进入了testLog4j方法");
 logger.error("error:进入了testLog4j方法");
}

运行该方法

image-20200726110907869

5. 映射器(mappers)

mappers

映射器 : 定义映射SQL语句文件

告诉 MyBatis 到哪里去找映射文件

方式一:使用相对于类路径的资源引用注册绑定(推荐)

<mappers>
 <mapper resource="mapper/UserMapping.xml"/>
</mappers>

方式二:使用映射器接口实现类的完全限定类名注册绑定

<mappers>
 <mapper class="mapper.UserMapper"/>
</mappers>

常见问题:

image-20200723213342342

注意点:

我的问题:Mapper接口和Mapper配置文件没有同名!!

image-20200723213853166

修改后:

image-20200723214035665 

方式三: 将包内的映射器接口实现全部注册为映射器

<mappers>
 <package name="mapper"/>
</mappers>

注意点同方式二:

 6. 其他配置

了解~

typeHandlers(类型处理器)

objectFactory(对象工厂)

plugins(插件)

三个常用插件:

到此这篇关于详解MyBatis XML配置解析的文章就介绍到这了,更多相关MyBatis XML配置内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

加载全部内容

相关教程
猜你喜欢
用户评论