MyBatis 配置
1、核心配置文件
-
mybatis-config.xml
-
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。
configuration(配置) properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境配置) environment(环境变量) transactionManager(事务管理器) dataSource(数据源) databaseIdProvider(数据库厂商标识) mappers(映射器)
2、环境配置(environments)
MyBatis 可以配置成适应多种环境
但每个 SqlSessionFactory 实例只能选择一种环境。
<environments default="development">
<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>
</environments>
事务管理器(transactionManager)
在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):
- JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
- MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。例如:
<transactionManager type="MANAGED">
<property name="closeConnection" value="false"/>
</transactionManager>
数据源(dataSource)
数据源 dbcp c3p0 druid
dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
- 大多数 MyBatis 应用程序会按示例中的例子来配置数据源。虽然数据源配置是可选的,但如果要启用延迟加载特性,就必须配置数据源。
有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]"):
POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
3、属性(properties)
我们可以通过properties属性来实现引用配置文件
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。[db.properties]
编写一个配置文件
db.properties
driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&charcterEncoding=UTF-8&serverTimezone=UTC
username = root
password = 123456
在核心配置文件中引入
配置文件需要放在environment上面
如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:
- 首先读取在 properties 元素体内指定的属性。
- 然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
- 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。
4、 类型别名(typeAliases)
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
<!--可以给实体类起别名 -->
<typeAliases>
<typeAlias type="com.newProject.pojo.User" alias="User"/>
</typeAliases>
也可以指定一个包名,MyBatis会在包名下面搜索需要的Java Bean
扫描实体类的包,他默认别名是为这个类的类名,首字母小写
<typeAliases>
<typeAlias type="com.newProject.pojo"/>
</typeAliases>
实体类较少时用前者 可以DIY
实体类多时用后者 第二种不行
可用注解起别名
@Alias("author")
public class Author {
...
}
5、其他配置
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- mybatis-generator-core
- mybatis-plus
- 通用mapper
6、 映射器
MapperRegistry:注册我们的Mapper文件
方式一:
<!-- 每个Mapper.xml都需要在MyBatis核心配置文件中注册-->
<mappers>
<mapper resource="com/newProject/dao/UserMapper.xml"/>
</mappers>
方式二:使用class的绑定
<!-- 每个Mapper.xml都需要在MyBatis核心配置文件中注册-->
<mappers>
<!-- <mapper resource="com/newProject/dao/UserMapper.xml"/>-->
<mapper class="com.newProject.dao.UserMapper"/>
</mappers>
注意:
- 接口和Mapper文件必须要同名
- 接口和他的Mapper配置文件必须在同一个包下。
方法三:使用扫描包进行注入绑定
<mappers>
<package name="com.newProject.dao"/>
</mappers>
7、日志
7.1、日志工厂
如果数据库操作出现了异常,我们需要排错。日志就是最好的助手。
曾经:sout,debug
现在:日志工厂
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-doe8WiTl-1602546462202)(image-20201011125128838.png)]
- SLF4J
- LOG4J
- LOG4J2
- JDK_LOGGING
- COMMONS_LOGGING
- STDOUT_LOGGING
- NO_LOGGING
在Mybatis中具体使用哪个日志实现,在设置中设定。
STDOUT_LOGGING 标准日志输出
在mybatis核心配置中,配置自己的日志。
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

7.2、Log4j
什么是Log4j?
- Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件。
- 我们也可以控制每一条日志的输出格式。
- 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
-
先导入Log4j的包
<!-- 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/example.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 -
配置log4j为日志的实现
<settings> <!--Log4j--> <setting name="logImpl" value="LOG4J"/> </settings> -
Log4j的使用:直接测试运行原来的查询

简单使用
-
在使用Log4j类中,导入包
import org.apache.log4j.Logger; -
生成日志对象,加载参数为当前类的Class
static Logger logger = Logger.getLogger(UserTest.class); -
日志级别
logger.info("info:进入了testLog4j方法"); logger.debug("debug:进入了testLog4j方法"); logger.error("error:进入了testLog4j方法");
本文详细介绍了MyBatis的配置,包括核心配置文件、环境配置、属性设置、类型别名、日志配置等方面。重点讲解了数据源的选择,如POOLED数据源的效率优势,以及日志工厂的设置,如使用Log4j进行日志记录。同时,提到了映射器的注册方式和日志实现的多种选择。
2662

被折叠的 条评论
为什么被折叠?



