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 实用篇(二)配置文件的更多相关文章

  1. Mybatis 实用篇(四)返回值类型

    Mybatis 实用篇(四)返回值类型 一.返回 List.Map List<User> getUsers(); <select id="getUsers" re ...

  2. Mybatis 实用篇(三)参数处理

    Mybatis 实用篇(三)参数处理 sql 语句中的参数 parameterType 可以省略不写. 一.参数封装 1.1 单个参数处理 public interface UserMapper { ...

  3. MyBatis 实用篇(一)入门

    MyBatis 实用篇(一)入门 MyBatis(http://www.mybatis.org/mybatis-3/zh/index.html) 是一款优秀的持久层框架,它支持定制化 SQL.存储过程 ...

  4. Mybatis配置信息浅析 MyBatis简介(二)

    官方文档入门篇中有明确说明 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的. SqlSessionFactory 的实例可以通过 SqlSessionF ...

  5. MyBatis 源码分析 - 配置文件解析过程

    * 本文速览 由于本篇文章篇幅比较大,所以这里拿出一节对本文进行快速概括.本篇文章对 MyBatis 配置文件中常用配置的解析过程进行了较为详细的介绍和分析,包括但不限于settings,typeAl ...

  6. SpringBoot系列之集成logback实现日志打印(篇二)

    SpringBoot系列之集成logback实现日志打印(篇二) 基于上篇博客SpringBoot系列之集成logback实现日志打印(篇一)之后,再写一篇博客进行补充 logback是一款开源的日志 ...

  7. 14 微服务电商【黑马乐优商城】:day02-springcloud(理论篇二:知道什么是SpringCloud)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一: ...

  8. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  9. MyBatis学习 之 二、SQL语句映射文件(1)resultMap

    目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...

随机推荐

  1. WPF 多线程 UI:设计一个异步加载 UI 的容器

    对于 WPF 程序,如果你有某一个 UI 控件非常复杂,很有可能会卡住主 UI,给用户软件很卡的感受.但如果此时能有一个加载动画,那么就不会感受到那么卡顿了.UI 的卡住不同于 IO 操作或者密集的 ...

  2. lua 二进制函数使用

    由于 Lua 脚本语言本身不支持对数字的二进制操作(例如 与,或,非 等操作),MUSHclient 为此提供了一套专门用于二进制操作的函数,它们都定义在一个"bit"表中,使用时 ...

  3. 获取 graphql schema 信息

    模块 npm install -g get-graphql-schema get-graphql-schema GRAPHQL_URL > schema.graphql 简单使用 使用prism ...

  4. 使用_beginThreadex创建多线程(C语言版多线程)

    _beginThreadex创建多线程解读 一.需要的头文件支持 #include <process.h>         // for _beginthread() 需要的设置:Proj ...

  5. column count of mysql.proc is wrong. expected 20,found 16. the table is probably corruptd.

    1558 1547 column count of mysql.proc is wrong. expected 20,found 16. the table is probably corruptd. ...

  6. 我的第一个php扩展

    一.进入php源码包,找到ext文件夹 cd /owndata/software/php-5.4.13/ext 文件夹下放的都是php的相关扩展模块 二.生成自己的扩展文件夹和相关文件 php支持开发 ...

  7. js的拼接

    var datatr = " <tr>"; datatr += "<td bgcolor='#EEEEEE'><input class='i ...

  8. Spring AOP 不同配置方式产生的冲突问题

    Spring AOP的原理是 JDK 动态代理和CGLIB字节码增强技术,前者需要被代理类实现相应接口,也只有接口中的方法可以被JDK动态代理技术所处理:后者实际上是生成一个子类,来覆盖被代理类,那么 ...

  9. Think in java.chm 第14章 多线程

    例子1引入线程概念通过得到当前线程方式循环主线程做某事 例子2演示了在主线程之外开启多个线程的基本方式 ( new一个extends Thread ) 例子3 ( task extends Threa ...

  10. Bootstrap-CL:标签

    ylbtech-Bootstrap-CL:标签 1.返回顶部 1. Bootstrap 标签 本章将讲解 Bootstrap 标签.标签可用于计数.提示或页面上其他的标记显示.使用 class .la ...