01. mybatis 简介 && 环境搭建
2016-02-08 11:58
260 查看
【mybatis 简介】
Mybatis 是支持普通Sql 查询,调用存储过程和高级映射的一个优秀地半自动化持久化框架。Mybatis 消除了几乎所有的JDBC 代码和参数的设置以及结果集的检索封装。Mybatis 中可以使用简单的 xml 和 注解方式来进行数据库实体映射 和 结果集封装,使数据库持久化操作更简单。 Mybatis 相较于Hibernate 类似的ORM 框架来讲,更加轻巧、更加灵活,使用起来更方便,更容易驾驭。 如今Mybatis 已经得到了广泛的使用,大名鼎鼎的工作流框架Activiti
就是使用的mybatis 进行的持久化。
Mybatis 相较于JDBC 主要有以下优点:1. sql 分离 2. 结果集封装 。
Mybatis 支持xml 方式 和 注解方式来配置映射关系, 笔者更喜欢xml 方式,所以只介绍xml相关的操作
【环境搭建】
【1. 引入 jar 包】
【2. 属性文件:jdbc.properties】
【4. 日志文件:log4j.xml】
【5. 单元测试:BasicTest】
【6. 项目包结构】
Mybatis 是支持普通Sql 查询,调用存储过程和高级映射的一个优秀地半自动化持久化框架。Mybatis 消除了几乎所有的JDBC 代码和参数的设置以及结果集的检索封装。Mybatis 中可以使用简单的 xml 和 注解方式来进行数据库实体映射 和 结果集封装,使数据库持久化操作更简单。 Mybatis 相较于Hibernate 类似的ORM 框架来讲,更加轻巧、更加灵活,使用起来更方便,更容易驾驭。 如今Mybatis 已经得到了广泛的使用,大名鼎鼎的工作流框架Activiti
就是使用的mybatis 进行的持久化。
Mybatis 相较于JDBC 主要有以下优点:1. sql 分离 2. 结果集封装 。
Mybatis 支持xml 方式 和 注解方式来配置映射关系, 笔者更喜欢xml 方式,所以只介绍xml相关的操作
【环境搭建】
【1. 引入 jar 包】
【2. 属性文件:jdbc.properties】
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/learn jdbc.username=root jdbc.password=root【3. mybatis 配置文件:conf.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> <!-- 指定jdbc配置文件 --> <properties resource="jdbc.properties"/> <!-- 为类指定别名,可指定整个包下所有的类,也可以指定具体的某个类 --> <typeAliases> <!-- 指定 org.zgf.learn.mybatis.entity 包 下的类,在mapper 的xml 文件中都是用简单类名 --> <package name="org.zgf.learn.mybatis.entity"/> </typeAliases> <!-- 开发环境: development: 开发环境 work: 生成环境 , 可配置多个环境,启用哪个,更改default 的值即可--> <environments default="development"> <environment id="development"> <!-- 事务方式 JDBC ,需要手动维护事务 的开启,提交,关闭--> <transactionManager type="JDBC" /> <!-- 数据源方式: POOLED 使用连接池,每次关闭不是真正的关闭,而是放回连接处; UNPOOLED:不适用连接池,每次关闭就是真正的关闭,性能较低,不推荐使用 --> <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> <!-- 指定映射文件位置 --> <mappers> <!-- <package name=""/> package 是用于指定类所在的包--> <mapper resource="mappers/personmapper.xml"/> <mapper resource="mappers/usermapper.xml"/> <mapper resource="mappers/cache/usercache2mapper.xml"/> <mapper resource="mappers/one2one/passengerCardMapper.xml"/> <mapper resource="mappers/one2one/passengerMapper.xml"/> <mapper resource="mappers/one2many/departmapper.xml"/> <mapper resource="mappers/one2many/empmapper.xml"/> </mappers> </configuration>
【4. 日志文件:log4j.xml】
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" /> </layout> </appender> <logger name="java.sql"> <level value="debug" /> </logger> <logger name="org.apache.ibatis"> <level value="debug" /> </logger> <root> <level value="debug" /> <appender-ref ref="STDOUT" /> </root> </log4j:configuration>
【5. 单元测试:BasicTest】
package org.zgf.learn.mybatis.mapper.abase; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; /** * mybatis 基础测试类 * @author zongf * @time 2016年2月8日-下午12:08:40 * */ public class BasicTest { private static final String configSource = "conf.xml"; //session 工厂 public static SqlSessionFactory sessionFactory; //session public static SqlSession session; //类创建的时候,初始化session 工厂 @BeforeClass public static void init(){ try { Reader reader = Resources.getResourceAsReader(configSource); sessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } /*** * 每个单元测试用例执行之前,新打开一个session(需要手动提交事务的session) * @author zonggf * @time 2016年2月8日-下午12:11:09 */ @Before public void setUp(){ if(sessionFactory != null){ session = sessionFactory.openSession(); } } /** * 每个测试用例执行之后,提交事务,然后关闭session * @author zonggf * @time 2016年2月8日-下午12:10:42 */ @After public void tearDown(){ if(session != null){ session.commit(); session.close(); } } }
【6. 项目包结构】
相关文章推荐
- ArrayList<T>数组转换为二维数组
- ubuntu ibus pinyin输入法异常
- 编程世界,我的世界。
- ADO.NET之command录入数据(视图版)
- NYOJ-12-喷水装置(二)
- 解决cocoapods在64位iOS7系统以下的警告问题
- PadLeft函数
- Django工程读取mongodb并使用分页器
- 删除海量数据之全表删除与部分删除
- HDU ACM 1081 To The Max->最大子矩阵
- 除夕夜
- 造轮子:论Top与ROW_NUMBER读取第一页的效率问题
- SQL变量与全局变量
- Java多线程编程总结 java 1.6版
- 使用Linux操作系统命令检查服务器主板上每个内存插槽的内存大小
- Codeforces Round #342 (Div. 2) A
- 安卓-APP安装后多个图标的解决
- Fragment生命周期
- Codeforces Round #342 (Div. 2) C. K-special Tables 构造
- 【翻译自mos文章】在使用Linux大页内存的配置中,使用drop_cache时导致的ORA-600 [KGHLKREM1]问题