MyBatis
基础
中文文档:https://mybatis.org/mybatis-3/zh/index.html
添加mybatis依赖时需要添加以下依赖
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
*Mapper.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="">
</mapper>
Mybatis工具类
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对象
//SqlSessionFactory 是生产 SqlSession 的工厂
public class MybatisUtil {
//提升作用域,方便下面的方法获取Session
private static SqlSessionFactory sqlSessionFactory;
static {
//为了获取SqlSessionFactory对象
//可以直接读取resources文件夹下的内容
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException i) {
i.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
// 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句
public static SqlSession getSqlSession() {
// 我们也可以在这里设置自动提交事务,在openSession()方法中传入true
return sqlSessionFactory.openSession();
}
}
数据库连接url写法,以下是连接MySQL5.7
的url,MySQL8.xx
版本的url需要加失去参数
jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8
Map参数和模糊查询
Map参数
想单独传递各种参数,或以各种属性单独组成对象 进行参数传递时,可以使用Map作为参数执行sql
parameterType="map"
sql中直接调用对象中的属性名就好,就像传递参数为实体类,然后调用属性那样
模糊查询
select * from test where concat(name1, name2) like concat ('%', #{value}, #{%}})
name1和name2是字段名,用于在这两个字段里进行模糊查询
生命周期及作用域
生命周期和作用域是至关重要的,错误的使用会导致严重的并发问题