Mybatis配置解析
官网地址:https://mybatis.org/mybatis-3/zh/configuration.html
1,environments 环境配置
1,MyBatis 可以配置成适应多种环境
2,尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
一个environments标签中可以配置多个environment。每个environment都代表一个环境,但是每次能能用一个环境。
1.1,transactionManager 事务管理器
1,在 MyBatis 中有两种类型的事务管理器( JDBC \ MANAGED )
<1>:JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
<2>:MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为。
提示:如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器, 因为 Spring 模块会使用自带的管理器来覆盖前面的配置。
1.2,dataSource 数据源
1,dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源
2,有三种内建的数据源类型( UNPOOLED | POOLED | JNDI )
<1>:UNPOOLED(无连接处池)– 这个数据源的实现只是每次被请求时打开和关闭连接。虽然有点慢,但对于在数据库连接可用性方面没有太高要求的简单应用程序来说,是一个很好的选择。 不同的数据库在性能方面的表现也是不一样的,对于某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。
<2>:POOLED(有连接池)– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这是一种使得并发 Web 应用快速响应请求的流行处理方式。
<3>:JNDI (基本不用)– 这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。这种数据源配置只需要两个属性。
2,properties 属性
1,属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递。
2,mybatis核心配置文件中的数据库连接信息可以通过db.properties文件的方式引入配置文件中。
1,把数据库连接信息提取出来放到resources目录下。起名db.properties
2,在核心配置文件中添加标签 properties resource=“配置文件”
在properties 标签中也可以配置 property name=“username” value=“password”,这里注意优先级,配置文件中的优先级高。
3,typeAliases 类型别名
1,类型别名是为 Java 类型设置一个短的名字。 它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。
1,第一种起别名方式。在mybatis核心配置文件中
typrAlias type=“实体类类路径” alias="别名"
这里使用别名,不用再写类路径。
2,第二种方式。实体类比较少的时候使用,他会扫描包,把所有实体类都起别名,为类名的小写
package name=包路径"
当这样配置时,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名若有注解,则别名为其注解值(注解优先级高)
@Alias("author")
public class Author {
...
}
4,设置
1,这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项的意图、默认值等。
具体设置详情设置在官网查看
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="defaultFetchSize" value="100"/>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
5,mappers 映射器
1,首先我们需要告诉 MyBatis 到哪里去找到这些语句,最佳的方式是告诉 MyBatis 到哪里去找映射文件,可以使用相对于类路径的资源引用, 或完全限定资源定位符或类名和包名等。
2,在核心配置文件中指定mapper.xml文件
例子:
<!-- 使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
<!-- 使用完全限定资源定位符(URL) -->
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
<mapper url="file:///var/mappers/BlogMapper.xml"/>
<mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="org.mybatis.builder.AuthorMapper"/>
<mapper class="org.mybatis.builder.BlogMapper"/>
<mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
<package name="org.mybatis.builder"/>
</mappers>
6,日志
1,日志配置。
注意位置。在mybatis核心配置文件中配置。用其他的日志只需要把value的值改掉即可
2,效果
6.2,log4j
1,在核心配置文件中配置日志
2,导包
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
3,在resources目录下创建log4j.properties文件。
填入配置
#Log4j配置#
#定义log4j的输出级别和输出目的地(目的地可以自定义名称,和后面的对应)
#[ level ] , appenderName1 , appenderName2
log4j.rootLogger=DEBUG,console,file
#-----------------------------------#
#1 定义日志输出目的地为控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
####可以灵活地指定日志输出格式,下面一行是指定具体的格式 ###
#%c: 输出日志信息所属的类目,通常就是所在类的全名
#%m: 输出代码中指定的消息,产生的日志具体信息
#%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n
#-----------------------------------#
#2 文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.file = org.apache.log4j.RollingFileAppender
#日志文件输出目录
log4j.appender.file.File=log/info.log
#定义文件最大大小
log4j.appender.file.MaxFileSize=10mb
###输出日志信息###
#最低级别
log4j.appender.file.Threshold=ERROR
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
#-----------------------------------#
#3 druid
log4j.logger.druid.sql=INFO
log4j.logger.druid.sql.DataSource=info
log4j.logger.druid.sql.Connection=info
log4j.logger.druid.sql.Statement=info
log4j.logger.druid.sql.ResultSet=info
#4 mybatis 显示SQL语句部分
log4j.logger.org.mybatis=DEBUG
#log4j.logger.cn.tibet.cas.dao=DEBUG
#log4j.logger.org.mybatis.common.jdbc.SimpleDataSource=DEBUG
#log4j.logger.org.mybatis.common.jdbc.ScriptRunner=DEBUG
#log4j.logger.org.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
#log4j.logger.java.sql.Connection=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的配置直接粘的这位博主的。注明出初:
https://blog.csdn.net/qq_40871734/article/details/97111679
4,结果
5,简单使用
1,要在使用log4j的类中倒包import.org.apache.log4j.Logger
2,日志对象,参数为当前类的class
static Logger logger = Logger.getLogger(UserDaoTest.class);
3,在方法中使用
logger.info("info------------");
logger.debug("debug----------");
logger.error("erroe----------");