MyBatis 实用篇(二)配置文件
MyBatis 实用篇(二)配置文件
一、全局配置
全局配置:http://www.mybatis.org/mybatis-3/zh/configuration.html
<?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>
<!-- 1. 引入配置文件 .properties -->
<properties resource="conf.properties"/>
<!-- 2. settings 配置项 -->
<settings>
<!--开启数据库下划线转驼峰规则-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--开启分步查询的懒加载-->
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
<!--开启二级缓存-->
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- 3. typeAliases 别名处理器,为 java 类型取别名 -->
<typeAliases>
<!-- 3.1 typeAlias: 为 java 类取别名
type 为类的全路径,alias 默认为类名的小写 -->
<!-- <typeAlias alias="User" type="com.github.binarylei.spring03.day0902.User"/> -->
<!-- 3.2 package 为某个包下的所有类批量取别名,默认类名小写,注意别名不区分大小写 -->
<package name="com.github.binarylei.mybatis.helloworld"/>
<!-- 3.3 注解取别名 @Alias("user") -->
</typeAliases>
<!-- 4. typeHandlers 类型处理器 -->
<typeHandlers/>
<!-- 5. plugins 插件,如分布插件等 -->
<!--<plugins>
<plugin interceptor=""/>
</plugins>-->
<!-- 6. environments 数据库配置,mybatis 可以配置多种环境
environment 配置一个具体的环境,必须有 transactionManager 和 dataSource 两个元素
transactionManager 事务管理器
type: JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
自定义事务管理器:实现 TransactionFactory 接口
dataSource 数据源
type: POOLEDJNDI(PooledDataSourceFactory)|UNPOOLEDJNDI(PooledDataSourceFactory)|JNDI(JndiDataSourceFactory)
自定义数据源:实现 DataSourceFactory 接口
JDBC|MANAGED 等别名的注册在 org.apache.ibatis.session.Configuration 中定义
-->
<environments default="dev">
<environment id="test">
<!-- 配置事务管理 ,采用JDBC管理事务-->
<transactionManager type="JDBC"/>
<!-- POOLED是mybatis的 数据源 -->
<!-- JNDI是基于tomcat的数据源 -->
<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>
<environment id="dev">
<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>
<!-- 7. databaseIdProvider -->
<databaseIdProvider type="DB_VENDOR">
<property name="SQL Server" value="sqlserver"/>
<property name="DB2" value="db2"/>
<property name="Oracle" value="oracle"/>
<property name="MySQL" value="mysql"/>
<property name="PostgreSQL" value="postgresql"/>
<property name="Derby" value="derby"/>
<property name="HSQL" value="hsql"/>
<property name="H2" value="h2"/>
</databaseIdProvider>
<!-- 8. 将 sql 注册到全局配置中 -->
<mappers>
<!--
mapper: 注册一个 sql 映射
7.1 resource: 引用 classpath 下的 sql 映射文件 eg: com/github/binarylei/mybatis/helloworld/UserMapper.xml
7.2 url: 引用网络或磁盘路径下的 sql 映射文件 eg: file:///var/mybatis/UserMapper.xml
7.3 class: 引用(注册)接口。
1. 有 sql 映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下
2. 没有 sql 映射文件,所有的接口都写到注解上 eg: @select("select * from user")
-->
<!--<mapper resource="com/github/binarylei/mybatis/helloworld/UserMapper.xml"/>-->
<!--<mapper class="com.github.binarylei.mybatis.helloworld.UserMapper"/>-->
<!-- 7.4 批量包扫描 -->
<package name="com.github.binarylei.mybatis"/>
</mappers>
</configuration>
二、mapper 配置
mapper 配置:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.github.binarylei.mybatis.helloworld.UserMapper">
<!--eviction: 緩存的回收策路。
LRU 默认,最近最少使用的:移除最长时间不被使用的对象。
FTFO 先进先出:按对家进入缓存的顺序来移除它们。
SOFT 软引用:移除基于垃圾回收器状态和软引用规则的对象。
WEAK 弱引用:更积极地移除基于拉圾收集器状态和弱引用规则。
flushInterval: 存刷新间隔缓存多长时间清空一次,默认不清空,设置一个毫秒值。
readon1y: 是否只读 true。
true: MyBatis 直接就会将数据在存中的引用交给用户。不安全,速度快
fa1se: MyBatis 会利用反序列的技术克隆一份新的数据给你。安全,速度慢
size: 缓存存放多少元素
type: 指定自定义存的全类名实现 Cache 接口即可
-->
<cache eviction="LRU" flushInterval="1000" readOnly="false" size="20"/>
<!-- 获取自增主键,方式一 -->
<insert id="save" parameterType="user" useGeneratedKeys="true" keyProperty="id">
insert into user(name,age,sex) values(#{name},#{age},#{sex})
</insert>
<!-- 获取自增主键,方式二 -->
<insert id="save2" parameterType="user">
<selectKey resultType="int" keyProperty="id" order="AFTER">
select last_insert_id();
</selectKey>
insert into user(name,age,sex) values(#{name},#{age},#{sex})
</insert>
<!-- useCache: true 表示开启二级缓存。
flushCache: true 表示每次使用时都会清除缓存,包括一级缓存和二级缓存
-->
<select id="getUser" resultType="User" useCache="false" flushCache="true">
select * from user where id=#{id};
</select>
</mapper>
每天用心记录一点点。内容也许不重要,但习惯很重要!
MyBatis 实用篇(二)配置文件的更多相关文章
- Mybatis 实用篇(四)返回值类型
Mybatis 实用篇(四)返回值类型 一.返回 List.Map List<User> getUsers(); <select id="getUsers" re ...
- Mybatis 实用篇(三)参数处理
Mybatis 实用篇(三)参数处理 sql 语句中的参数 parameterType 可以省略不写. 一.参数封装 1.1 单个参数处理 public interface UserMapper { ...
- MyBatis 实用篇(一)入门
MyBatis 实用篇(一)入门 MyBatis(http://www.mybatis.org/mybatis-3/zh/index.html) 是一款优秀的持久层框架,它支持定制化 SQL.存储过程 ...
- Mybatis配置信息浅析 MyBatis简介(二)
官方文档入门篇中有明确说明 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的. SqlSessionFactory 的实例可以通过 SqlSessionF ...
- MyBatis 源码分析 - 配置文件解析过程
* 本文速览 由于本篇文章篇幅比较大,所以这里拿出一节对本文进行快速概括.本篇文章对 MyBatis 配置文件中常用配置的解析过程进行了较为详细的介绍和分析,包括但不限于settings,typeAl ...
- SpringBoot系列之集成logback实现日志打印(篇二)
SpringBoot系列之集成logback实现日志打印(篇二) 基于上篇博客SpringBoot系列之集成logback实现日志打印(篇一)之后,再写一篇博客进行补充 logback是一款开源的日志 ...
- 14 微服务电商【黑马乐优商城】:day02-springcloud(理论篇二:知道什么是SpringCloud)
本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一: ...
- MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...
- MyBatis学习 之 二、SQL语句映射文件(1)resultMap
目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...
随机推荐
- Codeforces 1009C: Annoying Present
C. Annoying Present time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- python urllib2 error handling
python 2 里面的下载实现. https://stackoverflow.com/questions/666022/what-errors-exceptions-do-i-need-to-han ...
- fusionjs uber开源的通用web插件化开发框架
fusionjs uber开源的web 插件化开发框架 核心特性: 基于插件的开发,依赖注入开发 开箱即用的服务器端渲染,构建结果拆分,模块热加载 Tree-shaking 支持 集成的插件 redu ...
- Hystrix已经停止开发,官方推荐替代项目Resilience4j
随着微服务的流行,熔断作为其中一项很重要的技术也广为人知.当微服务的运行质量低于某个临界值时,启动熔断机制,暂停微服务调用一段时间,以保障后端的微服务不会因为持续过负荷而宕机.本文介绍了新一代熔断器R ...
- [LeetCode系列] K节点倒序问题迭代解法
给定链表和整数k, 使用in-space方法将链表按k个为一组进行倒序, 如果剩余个数不足k个则保留其原始顺序. 如给定1->2->3->4->5, k = 2, 需要返回 2 ...
- UOJ 347(洛谷4220) 【WC2018】通道——随机化
题目:http://uoj.ac/problem/347 https://www.luogu.org/problemnew/show/P4220 先写了暴力分的44分.那个两棵树.其中一棵是编号连续的 ...
- 使用ntp从时间同步服务器更新centos系统时间的方法
CentOS系统时间同步的步骤如下: 复制代码 代码如下: cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimentpdate us.pool.ntp ...
- MyEclipse 代码里的中文字太小设置方法
General>Appearance>Colors and Fonts>Basic>Text Font >Edit 把脚本字符改成“中欧字符”就可以了
- [教程]Ubuntu下完整配置自动壁纸切换
来源:http://www.linuxidc.com/Linux/2016-09/135350.html 更原始的来源就不去找了,如果有找到的同学可以回复我我到时改过来www 来源的教程是有效的,但是 ...
- JavaWeb的过滤器Filter
Filter的作用是在请求到达web资源(HTML.css.Servlet.Jsp)之前拦截,做一个预处理. 创建一个类实现Filter接口,在web.xml中对文件进行配置 <filter&g ...