1.Mybatis
MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象) 映射成数据库中的记录。
以下是 MyBatis 的一些主要特点:
- SQL 与 Java 代码分离:MyBatis 允许你将 SQL 语句写在 XML 文件中,这使得 SQL 语句的管理和维护更加容易。
- 支持定制化 SQL:MyBatis 提供了强大的动态 SQL 功能,允许你根据参数的不同值来生成不同的 SQL 语句。
映射灵活:MyBatis 支持一对一、一对多、多对一、多对多等复杂的映射关系。 - 支持存储过程:MyBatis 支持存储过程的调用。
- 支持事务管理:MyBatis 支持事务管理,允许你使用 Spring 或其他事务管理器进行事务管理。
-
支持多种数据库:MyBatis 支持多种数据库,如 MySQL、Oracle、SQL Server、SQLite 等。
使用 MyBatis,开发者可以更加专注于 SQL 语句的编写和优化,而不需要花费太多时间在 JDBC 的繁琐操作上。同时,MyBatis 的强大映射功能也使得数据库和 Java 对象之间的转换变得非常简单。2.Springboot使用Mybatis
2.1 引入环境
在build.gradle文件中加入:
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.1'
2.2 编写配置文件
编写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="mysql"> <environment id="mysql"> <!-- 使用JDBC事务管理器,目前由MyBatis管理 --> <transactionManager type="JDBC"/> <!-- 配置DataSource标准数据源,目前由MyBatis管理 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost/test?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="ae23e"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/UserMapper.xml"></mapper> </mappers> </configuration>
## 2.3 导入配置及编写工具类
在util包中新建MybatisUtils.java:
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;
//sqlSessionFactory -->SqlSession
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//使用Mybatis第一步: 获取sqlSessionFactory对象
String resource = "mybatis.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,我们可以从中获得 SqlSession 的实例。
//sqlSession 完全包含了面向数据库执行SQL命令所需的所有方法
public static SqlSession getSqlseesion() {
// SqlSession = sqlSessionFactory.openSession();
return sqlSessionFactory.openSession();
}
}
## 2.4 创建mapper.xml文件编写SQL
例如UserMapper.xml:
* id:返回的是所有对象的Map集合,resultType:每个对象是com.example.videoplay.entity.User类
* namespace对应的是下面的UserMapper.java接口:com.example.videoplay.mapper.UserMapper
<?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.example.videoplay.mapper.UserMapper">
<select id="findUserList" resultType="com.example.videoplay.entity.User">
select from user
</select>
<select id="getById" resultType="com.example.videoplay.entity.User">
select from user where id = #{id}
</select>
</mapper>
## 2.5 创建UserMapper的函数接口
UserMapper.java的函数接口:
import com.example.videoplay.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
@Mapper
public interface UserMapper {
public User getById(Integer id);
public List<User> findUserList();
}