1_log4j1和log4j2的简单配置
项目中添加依赖
log4j2
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.12.1</version>
</dependency>
log4j1
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
在mybatis.cfg.xml中配置MyBatis所使用的具体日志实现。如果不指定将自动搜索。可能会搜到log4j,但是如果优先搜到了其他的日志实现呢,所以还是设置为好。这一来log4j就跑不了了。
log4j 1
将log4j.properties文件负责到src下。另外在其中可以将全局的日志级别调高,避免大量debug信息的干扰。同时将对映射文件的操作调低,可以用来显示SQL语句的调试信息。开发阶段,建议启动控制的日志。
#定义全局日志级别调试阶段推荐debug
log4j.rootLogger=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=d:/msb.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n
在核心配置文件中可以选择的其他日志处理方式
log4j 2
将log4j2.xml文件负责到resources下。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
<Appenders>
<Console name="Console" target="SYSTEM_ERR">
<PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
</Console>
<RollingFile name="RollingFile" filename="log/test.log"
filepattern="${logPath}/%d{YYYYMMddHHmmss}-fargo.log">
<PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
<Policies>
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="20" />
</RollingFile>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
核心配置文件中可以指定日志打印方式
2_关于事务配置
在mybatis核心配置文件中 envirment中 通过transactionManager配置事务的处理策略
JDBC – 这个配置直接简单使用了 JDBC 的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围。
MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期(比如 Spring 或 JEE 应用服务器的上下文) 默认情况下它会关闭连接。然而一些容器并不希望这样, 因此如果你需要从连接中停止它,将closeConnection 属性设置为 false. mybatis本身并不做事务的处理,交给其他框架去处理事务,如spring
3_关于映射文件的加载方式
1.mapper映射文件的文件路径导入 使用的mapper标签的resource属性
2.网络资源路径 使用的mapper标签的url属性
3.接口的全限定名导入 使用的是mapper标签的class属性 (基于接口的代理模式开发)
4.包扫描形式加载所有的mapper映射文件 使用的是 package标签
4_关于实体类别名处理
在mybatis核心配置文件中使用别名处理
<!--设置实体类别名-->
<typeAliases>
<!--
通过包扫描给所有的实体类起别名
给指定报名下的所有类起别名
默认每个实体类的别名是首字母小写的类名
Dept dept
Emp emp
-->
<package name="com.msb.pojo"/>
</typeAliases>
在映射文件的resultType 返回值类型 和paramterType 上就可以使用别名了
<select id="selectByEmpno" resultType="emp">
select * from emp where empno = 7566
</select>
5_关于外部属性配置文件存储数据库连接信息
在resources下准备jdbc.properties属性配置文件
配置文件中的内容
jdbc_driver=com.mysql.cj.jdbc.Driver
jdbc_url=jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
jdbc_username=root
jdbc_password=root
在核心配置文件中引入db.properties属性文件
<?xml version="1.0" encoding="UTF-8" ?>
<!-- xml文档约束 约束xml文档中可以有哪些标签,哪些属性,以及标签的包含关系和顺序....
dtd 约束
schema 约束
-->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties"></properties>
<settings>
<!--设置日志处理方式-->
<setting name="logImpl" value="LOG4J"/>
</settings>
<!--设置实体类别名-->
<typeAliases>
<!--
通过包扫描给所有的实体类起别名
给指定报名下的所有类起别名
默认每个实体类的别名是首字母小写的类名
Dept dept
Emp emp
-->
<package name="com.msb.pojo"/>
</typeAliases>
<!--配置数据库链接信息-->
<environments default="mysql">
<!--数据源1-->
<environment id="mysql">
<transactionManager type="JDBC"/>
<!--一个数据源-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc_driver}"/>
<property name="url" value="${jdbc_url}"/>
<property name="username" value="${jdbc_username}"/>
<property name="password" value="${jdbc_password}"/>
</dataSource>
</environment>
</environments>
<!--加载映射文件的-->
<mappers>
<mapper resource="com/msb/mapper/DeptMapper.xml"/>
</mappers>
</configuration>