搭建MyBatis
结构图:
第一步,创建项目,导入jar包
共需导入 14 个包:
第二步,建立数据库和表
create database mybatis;
use mybatis;
DROP TABLE IF EXISTS tb_user1;
CREATE TABLE tb_user1(
ID INT(11) KEY AUTO_INCREMENT,
NAME VARCHAR(18) DEFAULT NULL,
SEX CHAR(2) DEFAULT NULL,
AGE INT(11) DEFAULT NULL
);
第三步,建立实体类
package com.ichliebedich.domain;
import java.io.Serializable;
public class User implements Serializable{
private Integer id;
private String name;
private String sex;
private Integer age;
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
第四步,建立Mapper接口
package com.ichliebedich.dao;
import com.ichliebedich.domain.User;
public interface UserMapper {
public void saveUser(User user);
}
第五步,建立sql映射文件
<?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">
<!-- 该文件编写 mybatis 中的 mapper 接口里面的方法提供对应的 sql 语句 -->
<mapper namespace="com.ichliebedich.dao.UserMapper">
<!-- 添加客户 -->
<insert id="saveUser" parameterType="com.ichliebedich.domain.User">
INSERT tb_user1 (name,sex,age) VALUES(#{name},#{sex},#{age})
</insert>
</mapper>
- 该文件编写 mybatis 中的 mapper 接口里面的方法提供对应的 sql 语句
- namespace对应mapper接口的完整名称
- insert中的id对应接口中的函数名称,parameterType对应接口中函数传入的参数类型,insert间是sql语句
第六步,建立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>
<!-- 和 spring 整合后 environments 配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用 jdbc 事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/ichliebedich/mapper/UserMapper.xml">
</mapper>
</mappers>
</configuration>
-
文件中需要改动的参数:dataSource里面的 proterty 和 mapper中的resource
-
proterty对应jdbc中常见的四个属性,若使用Mysql版本6以上:
driver改为 com.mysql.cj.jdbc.Driver
name改为jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
至于username和password就根据自己设置的值更改
-
resource对应sql映射文件名称
第七步,建立测试类
package com.ichliebedich.test;
import java.io.InputStream;
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.jupiter.api.Test;
import com.ichliebedich.dao.UserMapper;
import com.ichliebedich.domain.User;
public class InsertTest {
@Test
public void test() throws Exception {
//1.创建 SqlSessionFactoryBuilder
SqlSessionFactoryBuilder builer = new SqlSessionFactoryBuilder();
//加载 sqlMapConfig.xml 文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//2.创建 sqlSessionFactory
SqlSessionFactory factory = builer.build(is);
//3.打开 SqlSession
SqlSession sqlSession = factory.openSession();
///4.获取 Mapper 接口的对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//5.操作
User user = new User();
user.setName("Ich/liebe/dich");
user.setSex("男");
user.setAge(20);
userMapper.saveUser(user);
//6.提交事务
sqlSession.commit();
//7.关闭资源
sqlSession.close();
}
}
插入成功:
-
SqlSessionFactory:MyBatis关键对象,通过 SqlSessionFactory 和 XML 配置文件生成(代码中的1,2)
一旦创建,一直存在,建议使用单例模式。
-
SqlSession:执行持久化操作的对象
单例模式:
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class FKSqlSessionFactory {
private static SqlSessionFactory sqlSessionFactory = null;
// 初始化创建SqlSessionFactory对象
static{
try (// 读取mybatis-config.xml文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
){
sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(is);
} catch (Exception e) {
e.printStackTrace();
}
}
// 获取SqlSession对象的静态方法
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
// 获取SqlSessionFactory的静态方法
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}
将SqlSessionFactory封装起来,之后就可以直接调用,在这里不作详细讲解。
在搭建过程中要注意一些配置名称是否正确,配置文件是否存放到正确位置。