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 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。
Mybatis 快速入门
准备开发环境
创建测试项目,普通的 Java 项目或者 JavaWeb 项目均可
添加相应的 jar 包
- Mybatis 核心包 mybatis-3.30.jar
- 数据库驱动 mysql-connector-5.1.19-bin.jar
创建数据库和表
1 2 3 4 5 6 7 8
| create table `t_user` ( `user_id` int(11) not null auto_increment, `f_name` varchar(255) default null, `f_age` int(11) default null, primary key (`user_id`) ) engine=InnoDB default charset=utf-8 insert into t_user(f_name,f_age) values('CODE',26); insert into t_user(f_name,f_age) values('array',26);
|
使用 Mybatis 查询表中数据
- 添加 Mybatis 配置文件 mybatis-config.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?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> <! <! <typeAliases> <typeAlias type="com.code.bean.UserBean" alias="UserBean"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <property name="username" value="code"/> <property name="password" value="8998"/> </dataSource> </environment> </environments>
</configuration>
|
- 建立实体 Bean
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
| package com.code.bean; public class UserBean { private int id; private String name; private int age; public UserBean() { } public UserBean(String name, int age) { this.name = name; this.age = age; } public UserBean(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "UserBean{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
|
- 建立操作数据表的 sql 映射文件 userMapper.xml
- 创建一个包 com.code.mapper,用来放映射文件和 xxxMapper.java
- UserMapper.java
1 2 3 4 5 6 7
| package com.code.mapper; import com.code.bean.UserBean; import org.apache.ibatis.annotations.Param; public interface UserMapper { UserBean getUserById(@Param("userID")int userID); }
|
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 mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.code.mapper.UserMapper">
<resultMap id="userBean" type="UserBean"> <id property="id" column="user_id" javaType="int"/> <result property="name" column="f_name" javaType="string"/> <result property="age" column="f_age" javaType="int"/> </resultMap>
<select id="getUserById" resultMap="userBean" parameterType="int"> select * from t_user where user_id = #{userID} </select> </mapper>
|
- 在配置文件中注册映射文件
- 在 mybaits-config.xml 文件中添加
1 2 3 4 5 6 7 8
| <mappers>
<mapper resource="com/code/mapper/userMapper.xml"/> </mappers>
|
- 新建一个 DBUtil.java 工具类,位于 com.code.util 包下
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
| package com.code.util;
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 java.io.IOException; import java.io.InputStream;
public class DBUtil { private static SqlSessionFactory sqlSessionFactory;
static { InputStream in = null; try { in = Resources.getResourceAsStream("mybatis-config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); } catch (IOException e) { e.printStackTrace(); } finally { try { if (in != null) { in.close(); } } catch (IOException e) { e.printStackTrace(); } } }
public static SqlSession getSession() { return sqlSessionFactory.openSession(); } }
|
- 编写测试代码,执行 select 操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package com.code.test;
import com.code.bean.UserBean; import com.code.mapper.UserMapper; import com.code.util.DBUtil; import org.apache.ibatis.session.SqlSession; import org.junit.Test;
public class Test1 { @Test public void testGetUserById(){ SqlSession sqlSession = DBUtil.getSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); UserBean userBean = userMapper.getUserById(1); System.out.println(userBean); } }
|