【简介】: MyBatis是一款优秀的持久层框架,它支持定制SQL、存储过程以及高级映射。MyBatis避免了几乎所有JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO为数据中的记录。
【MyBatis框架架构图】:

【API接口层】:
【数据处理层】:
【基础支撑层】:
CREATE TABLEuser`(
`id` bigint(20) NOT NULL AUTO_INCREMENT,'name`varchar(255)DEFAULT NULL,
`age` int(255) DEFAULT NULL,
`salary` decima1 (10,0) DEFAULT NULLPRIMARY KEY ( `id`)
))ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
package cn.simplelife.work.domain;
import lombok.*;
import java.math.BigDecimal;
/**
* @ClassName User
* @Description
* @Author simplelife
* @Date 2022/10/14 15:08
* @Version 1.0
*/
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@ToString
public class User {
private Long id;
private String name;
private Integer age;
private BigDecimal salary;
}
DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"/>
<typeAliases>
<package name="cn.simplelife.work.domain"/>
typeAliases>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="cn/simplelife/work/mapper/UserMapper.xml"/>
mappers>
configuration>
DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.simplelife.work.mapper.UserMapper">
<insert id="insert" parameterType="cn.simplelife.work.domain.User" useGeneratedKeys="true" keyColumn="id"
keyProperty="id">
INSERT INTO user(name,age,salary) VALUES (#{name},#{age},#{salary})
insert>
<delete id="delete">
DELETE FROM user WHERE id=#{id}
delete>
<update id="update">
UPDATE user SET name=#{name},age=#{age},salary=#{salary} WHERE id=#{id}
update>
<select id="selectOne" resultType="User">
SELECT * FROM user WHERE id=#{id}
select>
<select id="selectAll" resultType="User">
SELECT * FROM user
select>
mapper>
package cn.simplelife.work.dao;
import cn.simplelife.work.domain.User;
import java.util.List;
/**
* @ClassName IUserDAO
* @Description
* @Author simplelife
* @Date 2022/10/14 15:54
* @Version 1.0
*/
public interface IUserDAO {
/**
* 插入条用户信息
*
* @param user 要插入的用户信息
*/
void insert(User user);
/**
* 根据id删除用户信息
*
* @param id 要删除的用户id
*/
void delete(Long id);
/**
* 根据id来修改用户信息
*
* @param user 要修改的用户id+新的用户信息
*/
void update(User user);
/**
* 根据id查询用户信息
*
* @param id 要查询的用户id
* @return 返回查询的用户对象
*/
User selectOne(Long id);
/**
* 查询所有的用户信息
*
* @return 返回用户信息列表
*/
List<User> selectAll();
}
package cn.simplelife.work.dao.impl;
import cn.simplelife.work.dao.IUserDAO;
import cn.simplelife.work.domain.User;
import cn.simplelife.work.utils.MyBatisUtils;
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.ArrayList;
import java.util.List;
/**
* @ClassName IUserDAOImpl
* @Description
* @Author simplelife
* @Date 2022/10/14 15:59
* @Version 1.0
*/
public class IUserDAOImpl implements IUserDAO {
@Override
public void insert(User user) {
SqlSession session = MyBatisUtils.getSqlSession();
// 3、执行操作
session.insert("cn.simplelife.work.mapper.UserMapper.insert", user);
// 4、提交事务
session.commit();
// 5、释放资源
session.close();
}
@Override
public void delete(Long id) {
try {
// 1、加载配置文件,获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
// 2、获取sqlSession会话对象
SqlSession sqlSession = factory.openSession();
// 3、执行语句
sqlSession.delete("cn.simplelife.work.mapper.UserMapper.delete", id);
// 4、提交事务
sqlSession.commit();
// 5、释放资源
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void update(User user) {
try {
// 1、加载配置文件及获取factory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
// 2、获取sqlSession会话对象
SqlSession sqlSession = factory.openSession();
// 4、执行操作
sqlSession.update("cn.simplelife.work.mapper.UserMapper.update", user);
// 5、提交事务
sqlSession.commit();
// 6、释放资源
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public User selectOne(Long id) {
User user = null;
try {
// 1、加载配置文件
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
// 2、获取sqlSession会话对象
SqlSession sqlSession = factory.openSession();
// 3、执行操作
user = sqlSession.selectOne("cn.simplelife.work.mapper.UserMapper.selectOne", id);
// 4、提交事务
sqlSession.commit();
// 5、释放资源
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
return user;
}
@Override
public List<User> selectAll() {
// 2、获取sqlSession对象
SqlSession sqlSession = MyBatisUtils.getSqlSession();
// 3、执行语句
List<User> userList = sqlSession.selectList("cn.simplelife.work.mapper.UserMapper.selectAll");
// 4、提交事务
sqlSession.commit();
// 5、释放资源
sqlSession.close();
return userList;
}
}
package cn.simplelife.work.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;
/**
* @ClassName MyBatisUtils
* @Description
* @Author simplelife
* @Date 2022/10/14 20:05
* @Version 1.0
*/
public class MyBatisUtils {
private MyBatisUtils() {
}
private static SqlSessionFactory factory = null;
static {
try {
factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return factory.openSession();
}
}