作者:dabing🧁 更新中。。。。
我的笔记仅供自己复习使用,做个记录,不完全,要学习还是去看官方文档或者其他大佬那哈。
推荐一个巨佬,轻松的小希:https://caochenlei.blog.csdn.net/?type=blog
🌕Mybatis,数据访问框架,操作数据库进行增删改查等操作
- 增删改查
- 全局配置
- 动态 SQL
- 缓存
- 和其他框架的整合
- 逆向工程
🌗Mybatis Plus,Mybatis 的增强工具,能够简化开发、提高效率
- 引入
- 通用 CRUD
- 条件构造器
- 代码生成器
- 插件扩展
- 自定义全局操作
# Mybatis
官网地址:https://mybatis.org/mybatis-3/zh/index.html
或使用:https://www.bookstack.cn/read/mybatis-3.5.7-zh/a01e37de891b7ef4.md
源码地址:https://github.com/mybatis
复习笔记:https://caochenlei.blog.csdn.net/article/details/108809821
轻松的小希的笔记:https://caochenlei.blog.csdn.net/?type=blog,强烈推荐!!!
# 1. 特点
-
简单易学:本身就很小且简单,没有任何第三方依赖,最简单安装只要两个 jar 文件 + 配置几个 sql 映射文件,易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
-
灵活:mybatis 不会对应用程序或数据库的现有设计强加任何影响。sql 写在 xml 里,便于统一管理和优化,通过 sql 语句可以满足操作数据库的所有需求
-
解除 sql 与程序代码的耦合:通过提供 DAO 层,讲业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql 和代码的分离,提高了可维护性。
-
提供对象关系映射标签,支持对象关系组建维护
-
提供 xml 标签,支持编写动态 sql
# 2. 增删改查 - 快速开始
- 安装 mybatis - pom 文件或者导入 jar 包
- 写 mybatis 配置文件
- 数据库属性文件
- 实体类 - entity
- 接口类 - mapper
- 映射文件 - 写 sql
- 其他业务类
反正就是,有个接口类,把 sql 写在它对应的映射文件里去。
然后使用的使用使用接口类的方法就可以了。如果用 mybatis-plus 一些常用的 sql 都不用自己手动写了,直接接口类继承 BaseMapper
# 1. 安装
- 导入依赖,或者手动导入 jar 工具包,可以在 github 上下载 jar 包
maven 导入:
<dependency> | |
<groupId>org.mybatis</groupId> | |
<artifactId>mybatis</artifactId> | |
<version>x.x.x</version> | |
</dependency> |
还需要数据库驱动包
# 2. 配置
- mybatis 配置文件: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> | |
<!-- 加载数据库配置文件信息 --> | |
<properties resource="dbconfig.properties"></properties> | |
<!-- 配置框架的全局配置信息 --> | |
<settings> | |
<setting name="mapUnderscoreToCamelCase" value="true" /> | |
<setting name="jdbcTypeForNull" value="NULL" /> | |
<setting name="lazyLoadingEnabled" value="true" /> | |
<setting name="aggressiveLazyLoading" value="false" /> | |
</settings> | |
<!-- 配置框架的多数据源信息 --> | |
<environments default="dev_mysql"> | |
<!-- 配置 mysql 开发环境,如果没有 mysql 可以去掉这个配置段 --> | |
<environment id="dev_mysql"> | |
<transactionManager type="JDBC" /> | |
<dataSource type="POOLED"> | |
<property name="driver" value="${mysql.driver}" /> | |
<property name="url" value="${mysql.url}" /> | |
<property name="username" value="${mysql.username}" /> | |
<property name="password" value="${mysql.password}" /> | |
</dataSource> | |
</environment> | |
<!-- 配置 oracle 开发环境,如果没有 oracle 可以去掉这个配置段 --> | |
<environment id="dev_oracle"> | |
<transactionManager type="JDBC" /> | |
<dataSource type="POOLED"> | |
<property name="driver" value="${oracle.driver}" /> | |
<property name="url" value="${oracle.url}" /> | |
<property name="username" value="${oracle.username}" /> | |
<property name="password" value="${oracle.password}" /> | |
</dataSource> | |
</environment> | |
</environments> | |
<!-- 数据库厂商起别名 --> | |
<databaseIdProvider type="DB_VENDOR"> | |
<property name="MySQL" value="mysql" /> | |
<property name="Oracle" value="oracle" /> | |
<property name="SQL Server" value="sqlserver" /> | |
</databaseIdProvider> | |
<!-- 批量注册映射文件 --> | |
<mappers> | |
<package name="com.caochenlei.mybatis.mapper" /> | |
</mappers> | |
</configuration> |
# 3. 数据源配置文件
- dbconfig.properties 文件,配置数据源信息
#mysql 数据库配置,如果没有 mysql 可以去掉这个配置段 | |
mysql.driver=com.mysql.jdbc.Driver | |
mysql.url=jdbc:mysql://localhost:3306/mybatis_crud | |
mysql.username=root | |
mysql.password=123456 | |
#oracle 数据库配置,如果没有 oracle 可以去掉这个配置段 | |
oracle.driver=oracle.jdbc.OracleDriver | |
oracle.url=jdbc:oracle:thin:@localhost:1521:orcl | |
oracle.username=system | |
oracle.password=123456 |
# 4. 实体类
简单举个例子:
package com.caochenlei.mybatis.crud; | |
@Data | |
public class Employee { | |
private Integer id; | |
private String lastName; | |
private String email; | |
private String gender; | |
} |
# 5. 接口类
EmployeeMapper.java(全路径:/mybatis-crud/src/com/caochenlei/mybatis/mapper/EmployeeMapper.java)
package com.caochenlei.mybatis.mapper; | |
import com.caochenlei.mybatis.crud.Employee; | |
public interface EmployeeMapper { | |
public Long addEmp(Employee employee); | |
public Employee getEmpById(Integer id); | |
public Long updateEmp(Employee employee); | |
public Long deleteEmpById(Integer id); | |
} |
# 6. 映射文件
EmployeeMapper.xml(全路径:/mybatis-crud/src/com/caochenlei/mybatis/mapper/EmployeeMapper.xml)
一般放 resources 路径下。
<?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.caochenlei.mybatis.mapper.EmployeeMapper"> | |
<!-- mysql 数据库语句映射,如果没有 mysql 可以去掉这个配置段 --> | |
<!-- public Long addEmp(Employee employee); --> | |
<insert id="addEmp" parameterType="com.caochenlei.mybatis.crud.Employee" useGeneratedKeys="true" keyProperty="id" databaseId="mysql"> | |
INSERT INTO `employee`(`last_name`,`email`,`gender`) | |
VALUES(#{lastName},#{email},#{gender}) | |
</insert> | |
<!-- public Employee getEmpById(Integer id); --> | |
<select id="getEmpById" resultType="com.caochenlei.mybatis.crud.Employee" databaseId="mysql"> | |
SELECT * FROM `employee` WHERE `id` = #{id} | |
</select> | |
<!-- public boolean updateEmp(Employee employee); --> | |
<update id="updateEmp" databaseId="mysql"> | |
UPDATE `employee` | |
SET `last_name`=#{lastName},`email`=#{email},`gender`=#{gender} | |
WHERE `id`=#{id} | |
</update> | |
<!-- public Long deleteEmpById(Integer id); --> | |
<delete id="deleteEmpById" databaseId="mysql"> | |
DELETE FROM `employee` WHERE `id`=#{id} | |
</delete> | |
</mapper> |
# 7. 测试
package com.caochenlei.mybatis.crud; | |
import java.io.IOException; | |
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.Test; | |
import com.caochenlei.mybatis.mapper.EmployeeMapper; | |
public class EmployeeTest { | |
@Test | |
public void addEmpTest() { | |
try { | |
String resource = "mybatis-config.xml"; | |
InputStream inputStream = Resources.getResourceAsStream(resource); | |
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); | |
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); | |
SqlSession openSession = sqlSessionFactory.openSession(true); | |
EmployeeMapper employeeMapper = openSession.getMapper(EmployeeMapper.class); | |
Employee employee = new Employee(); | |
employee.setLastName("zhangsan"); | |
employee.setGender("男"); | |
employee.setEmail("774908833@qq.com"); | |
Long rowCounts = employeeMapper.addEmp(employee); | |
System.out.println("影响行数:" + rowCounts); | |
System.out.println("自动增长:" + employee.getId()); | |
openSession.close(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
@Test | |
public void getEmpByIdTest() { | |
try { | |
String resource = "mybatis-config.xml"; | |
InputStream inputStream = Resources.getResourceAsStream(resource); | |
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); | |
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); | |
SqlSession openSession = sqlSessionFactory.openSession(true); | |
EmployeeMapper employeeMapper = openSession.getMapper(EmployeeMapper.class); | |
Employee employee = employeeMapper.getEmpById(1); | |
System.out.println(employee); | |
openSession.close(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
@Test | |
public void updateEmpTest() { | |
try { | |
String resource = "mybatis-config.xml"; | |
InputStream inputStream = Resources.getResourceAsStream(resource); | |
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); | |
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); | |
SqlSession openSession = sqlSessionFactory.openSession(true); | |
EmployeeMapper employeeMapper = openSession.getMapper(EmployeeMapper.class); | |
Employee employee = employeeMapper.getEmpById(1); | |
employee.setGender("女"); | |
Long rowCounts = employeeMapper.updateEmp(employee); | |
System.out.println("影响行数:" + rowCounts); | |
openSession.close(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
@Test | |
public void deleteEmpByIdTest() { | |
try { | |
String resource = "mybatis-config.xml"; | |
InputStream inputStream = Resources.getResourceAsStream(resource); | |
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); | |
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); | |
SqlSession openSession = sqlSessionFactory.openSession(true); | |
EmployeeMapper employeeMapper = openSession.getMapper(EmployeeMapper.class); | |
Long rowCounts = employeeMapper.deleteEmpById(1); | |
System.out.println("影响行数:" + rowCounts); | |
openSession.close(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
} |
# 3. 配置
已经快速复习了怎么使用了,接下来就是探究一下配置文件里的东西了。
# Mybatis-Plus
官网地址:https://baomidou.com/
源码地址:https://github.com/baomidou/mybatis-plus