目录
回到顶部
1、什么是MyBatis?
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
PS:本文所有代码下载链接:http://pan.baidu.com/s/1gf8CPQN 密码:t2x9
再给大家推荐一个比较好的mybatis学习网站:www.mybatis.cn
回到顶部
2、MyBatis 入门实例基于xml配置
①、创建MySQL数据库:mybatisDemo和表:person
| 1 2 3 |
create database mybatisDemo; use mybatisDemo; create table person(pid int primary key AUTO_INCREMENT, pname varchar(50), page int); |

②、建立一个Java工程,并导入相应的jar包

相应的 jar 包下载链接:http://pan.baidu.com/s/1skZM09Z 密码:nkt6
③、在 MyBatisDemo 工程中添加数据库配置文件 mybatis-configuration.xml
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?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> <!-- 可以配置多个运行环境,但是每个 SqlSessionFactory 实例只能选择一个运行环境 一、development:开发模式 二、work:工作模式--> <environments default="development"> <!--id属性必须和上面的default一样 --> <environment id="development"> <!--事务管理器 一、JDBC:这个配置直接简单使用了 JDBC 的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围 二、MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期 比如 spring 或 JEE 应用服务器的上下文,默认情况下,它会关闭连接。然而一些容器并不希望这样, 因此如果你需要从连接中停止它,就可以将 closeConnection 属性设置为 false,比如: <transactionManager type="MANAGED"> <property name="closeConnection" value="false"/> </transactionManager> --> <transactionManager type="JDBC"/> <!--dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象源 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatisdemo"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> </configuration> |
④、定义表所对应的实体类

| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package com.ys.bean; public class Person {
private int pid; private String pname; private int page; public int getPid() {
return pid; } public void setPid(int pid) {
this.pid = pid; } public String getPname() {
return pname; } public void setPname(String pname) {
this.pname = pname; } public int getPage() {
return page; } public void setPage(int page) {
this.page = page; } @Override public String toString() {
return "Person [pid=" + pid + ", pname=" + pname + ", page=" + page + "]"; } } |
⑤、定义操作 person 表的sql映射文件personMapper.xml
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<?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.ys.bean.personMapper"> <!-- 根据 pid 查询 person 表中的数据 id:唯一标识符,此文件中的id值不能重复 resultType:返回值类型,一条数据库记录也就对应实体类的一个对象 parameterType:参数类型,也就是查询条件的类型 --> <select id="selectPersonById" resultType="com.ys.bean.Person" parameterType="int"> <!-- 这里和普通的sql 查询语句差不多,对于只有一个查询条件后面的 #{pid}表示占位符,里面不一定要写pid,写啥都可以,但是不要空着;如果有多个查询条件,则要写pojo类里面的属性 --> select * from person where pid = #{pid} </select> <!-- 查询person 表所有数据 --> <select id="getAllPerson" resultType="com.ys.bean.Person"> select * from person </select> <!-- 根据id更新数据 --> <update id="updatePersonById" parameterType="com.ys.bean.Person"> update person set pname=#{pname},page=#{page} where pid = #{pid} </update> <!-- 向 person 表插入一条数据 --> <insert id="addPerson" parameterType="com.ys.bean.Person"> insert into person(pid,pname,page) values(#{pid},#{pname},#{page}) </insert> <!-- 根据 pid 删除数据 --> <delete id="deletePersonById" parameterType="Long"> delete from person where pid=#{pid} </delete> </mapper> |
⑥、向 mybatis-configuration.xml 配置文件中注册 personMapper.xml 文件
| 1 2 3 4 5 |
<mappers> <!-- 注册personMapper.xml文件, personMapper.xml位于com.ys.bean这个包下,所以resource写成com/ys/bean/personMapper.xml--> <mapper resource="com/ys/bean/personMapper.xml"/> </mappers> |
如下图所示:

⑦、创建测试类
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
package com.ys.test; import java.io.InputStream; import java.util.List; import org.apache.ibatis.session.SqlSession; imp
|