MyBatis快速入门
一.MyBatis 简介
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,是一个基于Java的持久层框架。
- 持久层: 可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏,在断电或者其他情况下,重新开启系统仍然可以读取到这些数据。
- 优点: 可以使用巨大的磁盘空间存储相当量的数据,并且很廉价
- 缺点:慢(相对于内存而言)
为什么使用 MyBatis
在我们传统的 JDBC 中,我们除了需要自己提供 SQL 外,还必须操作 Connection、Statment、ResultSet,不仅如此,为了访问不同的表,不同字段的数据,我们需要些很多雷同模板化的代码,闲的繁琐又枯燥。
而我们在使用了 MyBatis 之后,只需要提供 SQL 语句就好了,其余的诸如:建立连接、操作 Statment、ResultSet,处理 JDBC 相关异常等等都可以交给 MyBatis 去处理,我们的关注点于是可以就此集中在 SQL 语句上,关注在增删改查这些操作层面上。
并且 MyBatis 支持使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
1.使用MyBatis
下载MyBatis所需要的jar包 打开链接https://github.com/mybatis/mybatis-3/releases

准备数据库并自己随机添加几条数据
CREATE TABLE `master` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
`name` varchar(20) DEFAULT NULL COMMENT '登录名',
`password` varchar(20) DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
创建MyBatis项目

a. 我们只是创建一个简单的普通项目,所以这里create from archetype 不用点,也不用选取其他模板,直接next就好了。


创建一个lib包导入MyBatis 的jar包

配置MyBatis.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>
<!-- 环境配置,数据库连接信息-->
<environments default="mydev">
<!-- 环境变量配置-->
<environment id="mydev">
<!-- 事务管理器配置-->
<transactionManager type="JDBC"/>
<!-- 数据源-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/> <!-- test为数据库名-->
<property name="username" value="root"/> <!-- 数据用户名-->
<property name="password" value="123"/> <!-- 数据库密码-->
</dataSource>
</environment>
</environments>
<!-- 映射到层的DogDao.xml配置文件-->
<mappers>
<!--<mapper resource="RuaMapper.xml"/>-->
<package name="com.java.ym.dao"/>
<!-- 这里使用的package跟接口层的层次需要一样 -->
</mappers>
</configuration>

创建实体类
package com.java.ym.entity;
/**
* @Author: YuMi
* @Date: 2020/9/22 10:56
* ----------------------
* @Comments:
*/
public class Master {
private Integer id;
private String name;
private String password;
public Master() {
}
public Master(Integer id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Master{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
创建接口
package com.java.ym.dao;
import com.java.ym.entity.Master;
import com.java.ym.entity.Pet;
import com.java.ym.entity.Rua;
import java.util.List;
/**
* @Author: YuMi
* @Date: 2020/9/21 14:59
* ----------------------
* @Comments:
*/
public interface RuaMapper {
/* List<Rua> seletRua();
int addRua(Rua rua);
List<Rua> likeSelectRua(String name);
List<Pet> selectPet(int pid);*/
/**
* 查询
* @return
*/
List<Master> selectMaster();
}
编写SQL.xml
<?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.java.ym.dao.RuaMapper">
<!-- 查询-->
<!--<select id="seletRua" resultType="com.java.ym.entity.Rua">
select * from rua;
</select>
<insert id="addRua">
<selectKey keyColumn="id" keyProperty="id" order="AFTER" resultType="int">
select LAST_INSERT_ID();
</selectKey>
INSERT INTO rua VALUES(null,#{name},#{age},#{love});
</insert>
<select id="likeSelectRua" parameterType="String" resultType="com.java.ym.entity.Rua">
SELECT * FROM rua WHERE NAME LIKE '%${value}%'
</select>-->
<!-- Master -->
<!--
id: 唯一标识符
type: 对应实体类
-->
<resultMap id="masterResult" type="com.java.ym.entity.Master">
<!--
property: 实体类的属性名
column: 数据库的字段名(可以不分大小写)
-->
<id property="id" column="id"/>
<result property="name" column="name"/>
</resultMap>
<!--
查询
id: 跟接口里的方法名对应
resultMap: 对应上面的resultMap的id
-->
<select id="selectMaster" resultMap="masterResult">
SELECT id,name,password FROM MASTER
</select>
<!--<select id="selectPet" parameterType="int" resultType="com.java.ym.entity.Pet">
select * from pet where pid=#{pid};
</select>-->
</mapper>

创建MyBatisUtils工具类
package com.java.ym.utils;
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;
/**
* @Author: YuMi
* @Date: 2020/9/23 19:18
* ----------------------
* @Comments: MyBatis工具类
*/
public class MyBatisUtils {
static SqlSessionFactory build;
static {
// 读取config表示配置文件
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream("MyBatis.xml");
// 创建SqlSessionFactoryBuilder对象,SqlSessionFactory接收
build = new SqlSessionFactoryBuilder().build(inputStream);
// 获取SqlSession对象,从SqlSessionFactory中获取SqlSession
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 这里build.openSession(true) 括号里给true是自动提交事务
* @return
*/
public static SqlSession getSqlSession(){
return build.openSession(true);
}
}
测试
package com.java.ym;
import com.java.ym.dao.RuaMapper;
import com.java.ym.entity.Master;
import com.java.ym.entity.Pet;
import com.java.ym.entity.Rua;
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;
import java.util.List;
/**
* @Author: YuMi
* @Date: 2020/9/21 15:04
* ----------------------
* @Comments:
*/
public class MyBatisRuaTest {
public static void main(String[] args) throws IOException {
// 这里运用了先前创建的MYBatisUtils工具类
RuaMapper mapper = MyBatisUtils.getSqlSession().getMapper(RuaMapper.class);
List<Master> masters = mapper.selectMaster();
for (Master master:masters){
System.out.println(master);
}
}
}
运行结果

本文介绍了MyBatis的基本概念和优点,它是一个基于Java的持久层框架,简化了JDBC中的模板化代码。文章详细讲解了如何创建一个MyBatis项目,包括下载jar包、配置MyBatis.xml、创建实体类、接口、SQL.xml以及编写测试。
1529

被折叠的 条评论
为什么被折叠?



