作者: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. 增删改查 - 快速开始

  1. 安装 mybatis - pom 文件或者导入 jar 包
  2. 写 mybatis 配置文件
  3. 数据库属性文件
  4. 实体类 - entity
  5. 接口类 - mapper
  6. 映射文件 - 写 sql
  7. 其他业务类

反正就是,有个接口类,把 sql 写在它对应的映射文件里去。

然后使用的使用使用接口类的方法就可以了。如果用 mybatis-plus 一些常用的 sql 都不用自己手动写了,直接接口类继承 BaseMapper父类就可以直接使用父类有的一些增删改查的方法,如果有额外的逻辑可以在接口类增加自己想要的方法。

# 1. 安装

  1. 导入依赖,或者手动导入 jar 工具包,可以在 github 上下载 jar 包

maven 导入:

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

还需要数据库驱动包

# 2. 配置

  1. 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. 数据源配置文件

  1. 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

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Dabing-He 微信支付

微信支付