首页 > 代码库 > 学习mybatis-3 step by step 篇一
学习mybatis-3 step by step 篇一
一、搭建简单mybatis-3环境(详细的中文文档)
集成开发环境:IDEA
项目:maven + mybatis-3
1、创建maven结构项目
含简单,如下图:
下一步后,填写groupid和artifactid完成就可以了。本次引入的jar如下:
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.12</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> <optional>true</optional> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.15</version> </dependency> </dependencies>
2、配置mybatis
-
从 XML 中构建 SqlSessionFactory
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。
-
mybatis-config.xml配置文件如下
<?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> <properties resource="config.properties"> <!--<property name="driver" value="http://www.mamicode.com/dev_user"/>--> <!--<property name="password" value="http://www.mamicode.com/F2Fa3!33TYyg"/>--> <!--<property name="username" value="http://www.mamicode.com/dev_user"/>--> <!--<property name="password" value="http://www.mamicode.com/F2Fa3!33TYyg"/>--> </properties> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <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> <mappers> <mapper resource="sqlmapper/UserMapper.xml"/> </mappers> </configuration>
以上配置文件注意几点,driver、url、username、password引用的是配置文件中的变量,以上配置引用的的是config.properties中的变量。当然也可以在<properties></properties>中填写,如注释掉的部分。如果都有的话,会有优先级问题,读取配置文件中变量的优先级高于<properties>中配置的值。
- 属性也可以被传递到 SqlSessionFactoryBuilder.build()方法中。例如:
Properties properties = new Properties(); properties.load(new FileInputStream("Test.properties")); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream, properties);
如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:
- 在 properties 元素体内指定的属性首先被读取。
- 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。
- 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的是 properties 属性中指定的属性。
3、MyBatis配置之settings标签
一个配置文件如下
<settings> <setting name="cacheEnabled" value="false"/> <setting name="useGeneratedKeys" value="true"/> <setting name="defaultExecutorType" value="REUSE"/> <setting name="lazyLoadingEnabled" value="false"/> <setting name="defaultStatementTimeout" value="50"/> </settings>
- cacheEnabled
该配置影响的所有映射器中配置的缓存的全局开关。默认值:true
- useGeneratedKeys
允许 JDBC 支持自动生成主键,需要驱动兼容。 如果设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。默认值:false
- defaultExecutorType
配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。(SIMPLE REUSE BATCH),默认值:SIMPLE
- lazyLoadingEnabled
延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。(true | false),默认值:false
- defaultStatementTimeout
设置超时时间,它决定驱动等待数据库响应的秒数。
更多的setting设置参考:http://www.mybatis.org/mybatis-3/zh/configuration.html#properties
关于defaultExecutorType理解可参考:https://my.oschina.net/HuQingmiao/blog/516378
需要注意的是</settings>标签是有顺序的,不能随便放。需放在<properties>后面,一个完整有效的配置如下:
<?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> <properties resource="config.properties"> <!--<property name="driver" value="http://www.mamicode.com/dev_user"/>--> <!--<property name="password" value="http://www.mamicode.com/F2Fa3!33TYyg"/>--> <!--<property name="username" value="http://www.mamicode.com/dev_user"/>--> <!--<property name="password" value="http://www.mamicode.com/F2Fa3!33TYyg"/>--> </properties> <settings> <setting name="cacheEnabled" value="false"/> <setting name="useGeneratedKeys" value="true"/> <setting name="defaultExecutorType" value="REUSE"/> <setting name="lazyLoadingEnabled" value="false"/> <setting name="defaultStatementTimeout" value="50"/> </settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <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> <mappers> <mapper resource="sqlmapper/UserMapper.xml"/> </mappers> </configuration>
学习mybatis-3 step by step 篇一