Mybatis—配置文件篇

3 篇文章 0 订阅
3 篇文章 0 订阅

全局配置文件

环境配置(environments)

<!-- 先写properties标签
resource:前找当前项目下的连接池的properties资源;找的是类路径下面的;
url:获取网上配置信息;
-->
<properties resource="jdbc.properties">
<!-- name:键
value:值;
在properties内部标签中的property中配置的信息优先级最高,优先读取后,
如果配置文件中,与之键名相同则进行覆盖;
<property name="" value=""/>
-->
</properties>
<environments default="development">
<!-- environment正常来说分成了三种:生产prod、测试test、开发: -->
<environment id="development">
<!--
transactionManager:事务管理: type:类型:JDBC:支持jdbc事务;
MANAGED :从不提交和回滚;
-->
<transactionManager type="JDBC"/>
<!-- dataSource:POOLED:表示使用池化技术,池化指的是连接池,此处
指代的是mybatis自己的连接池
type="[UNPOOLED|POOLED|JNDI]
-->
<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>

 


设置(setting)

<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
类型别名(typeAliases)
常用*
<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="safeResultHandlerEnabled" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods"
value="equals,clone,hashCode,toString"/>
<setting name="defaultScriptingLanguage"
value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/>
<setting name="defaultEnumTypeHandler"
value="org.apache.ibatis.type.EnumTypeHandler"/>
<setting name="callSettersOnNulls" value="false"/>
<setting name="returnInstanceForEmptyRow" value="false"/>
<setting name="logPrefix" value="exampleLogPreFix_"/>
<!-- 引入日志框架:在此处使用的是LOG4J2
需要引入两个jar包:
log4j-api;
log4j-core;
需要引入log4j2.xml或者log4j2.properties;
-->
<setting name="logImpl" value="SLF4J | LOG4J | LOG4J2 | JDK_LOGGING |
COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING"/>
<setting name="proxyFactory" value="CGLIB | JAVASSIST"/>
<setting name="vfsImpl" value="org.mybatis.example.YourselfVfsImpl"/>
<setting name="useActualParamName" value="true"/>
<setting name="configurationFactory"
value="org.mybatis.example.ConfigurationFactory"/>
</settings>

 

类型别名typeAliases

<!-- 别名包扫描: -->
<typeAliases>
<package name="cn.ry.pojo"/>
</typeAliases>
常用别名类型:

 

 


插件(plugins 

<plugins>
<plugin interceptor="org.mybatis.example.ExamplePlugin">
<property name="someProperty" value="100"/>
</plugin>
</plugins>
<!-- 以后使用分页插件 pageHelper -->

 

映射器(mappers 

<!-- 映射文件地址: -->
<mappers>
<!--<mapper resource>具体去找到单个的映射文件 不推荐:
<mapper resource="cn/ry/mapper/SysUserMapper.xml"/>
-->
<!-- 包扫描:读取所有的mapper.xml文件; -->
<package name="cn.ry.mapper"/>
</mappers>


映射文件

insert*

新增数据后,获取新增进去的数据的id

<!--
keyColumn:主键的列名或者别名;
keyProperty: 主键的属性名;
useGeneratedKeys: 等同于全局配置文件中是否开启自增主键——》新增完对象以后,对
象.getId能否取到值;
-->
<!-- 第一种写法: -->
<insert id="insertSysUser" parameterType="cn.ry.pojo.SysUser" keyColumn="id"
keyProperty="id" useGeneratedKeys="true">
insert into sys_user
(dept_id, user_name, mobile, email, login_name, login_pwd)
values (#{dept_id},'${userName}',#{mobile},#{email},#{login_name},
#{loginPwd})
</insert>
<!-- 第二种写法: -->
<insert id="insertSysUser" parameterType="cn.ry.pojo.SysUser" >
<!--
order: 排序:
AFTER: 数据库先执行insert,再执行selectKey——》mysql;
BEFORE: 先执行selectkey 再执行insert;——》oracle;
-->
<selectKey keyColumn="idd" keyProperty="id" order="AFTER"
resultType="int" >
<!-- 用来查询当前的最后一个进入的id值; -->
select id idd from sys_user order by id desc limit 1
</selectKey>
insert into sys_user
(dept_id, user_name, mobile, email, login_name, login_pwd)
values (#{dept_id},'${userName}',#{mobile},#{email},#{login_name},
#{loginPwd})
</insert>

 select

<!-- resultMap:主要用于多表查询,多表时进行别名映射等;
需要专门去定义resultMap标签,标签中id属性指的是map名;
type属性指的是映射的实体类全限定类名或者别名;
extends指的是继承,一般来说继承当前xml中的基本的map;
resultType:单表查询即可;
-->
<select id="selectAllData" resultMap="map0">
select id,dept_id,user_name from sys_user
</select>
<!-- resultMap主要写的是映射规则: -->
<resultMap type="cn.ry.pojo.SysUser" id="map0">
<!-- id标签指的是主键:
column:查询出来的列名或者别名
property:指的是实体类属性名;
日志使用
需要导入两个jar包:log4j-core、 log4j-api;
log4j2.xml
-->
<id column="id" property="id"/>
<!-- 除主键以外的其他列: -->
<result column="dept_id" property="dept_id"/>
<result column="user_name" property="userName"/>
</resultMap>

 日志使用

  • 需要导入两个jar包:log4j-core、log4j-api

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<!-- 定义日志文件的输出路径、命名方式等 -->
<Appenders>
<!-- 控制台输出 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level
%logger{36} - %msg%n" />
</Console>
<!-- 文件输出 -->
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-
%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level
%logger{36} - %msg%n" />
<Policies>
<!-- 每天生成一个新的日志文件 -->
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<!-- 文件大小超过10MB时滚动生成新文件 -->
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
</RollingFile>
</Appenders>
<!-- 日志级别及日志输出目的地定义 -->
<Loggers>
<!-- 设置root logger级别为info,并将日志输出到控制台和文件 -->
<Root level="info">
<AppenderRef ref="Console" />
<AppenderRef ref="RollingFile" />
</Root>
<!-- 可以为特定的包或类设置不同的日志级别 -->
<Logger name="cn.ry.mapper" level="debug">
</Logger>
</Loggers>
</Configuration>

好了今天的分享就到这里了,博主创作不易,点个关注不迷路,感谢大家。我们下期再见!

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值