SpringBoot整合Mybatis和Mybatis-plus

1.SpringBoot整合Mybatis

1.1添加jar包文件

	<!--引入数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>

		<!--springBoot数据库连接 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>



		<!--spring整合mybatis 暂时 -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>

1.2关于配置文件说明

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

1.3编辑YML配置文件

	server:
  port: 8090
  servlet:
    context-path: /
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

mybatis:
  #定义别名包
  type-aliases-package: com.jt.pojo
  #添加映射文件
  mapper-locations: classpath:/mybatis/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true

  
  

1.4编辑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.jt.mapper.UserMapper">
	<!--
		resultType="包名.类名"  如果配置了别名包则可以自动的拼接.
	
	  -->
	<select id="findAll" resultType="User">
		select * from user
	</select>
	<--
		关于驼峰映射说明:
		字段信息:
				user_id , user_age , user_name
		对象属性:
				userId	, userAge ,userName
		如果需要实现属性与字段的映射,则必须开启驼峰规则.
		字段信息~~~user_id~~~~~去掉_线~~~~~之后首字母大写~~~~userId
		改名字可以与对象的属性映射.
		注意事项:  如果一旦开启驼峰规则映射,则必须按照要求执行.
			字段:user_id  不能映射  属性:user_id
	  -->
	
	
	
</mapper>

测试代码

	package com.jt.test;

import java.util.List;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import com.jt.mapper.UserMapper;
import com.jt.pojo.User;

@SpringBootTest	 //springBoot测试注解  开启了spring容器
public class TestMybatis {
	
	@Autowired
	private UserMapper userMapper;
	
	@Test
	public void findAll() {
		
		List<User> userList = userMapper.findAll();
		System.out.println(userList);
	}
	
}


2.MybatisPlus(MP)

2.1MybatisPlus 介绍

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2.2MP的特性

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

2.3 历史背景

问题1: 现在操作的数据库任然采用 sql语句的方式进行编辑. 操作sql的方式实质就是面对过程的操作方式.
需求: 由于传统的sql 开发效率低,并且无论多么简单的sql都需要程序员自己编辑.很繁琐(无趣).
想法: 能否以面向对象的方式操作数据库!!!

2.4JPA说明

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中
Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。

核心理念: 以面向对象的方式操作数据库.

2.5

核心:

  1. 表与对象建立关联关系
    对象名称 ---------> 表名
    对象的属性 -------> 数据表中的字段.
  2. 采用第三方接口 规范所有的单表操作规则.(封装思想)
  3. 将CURD接口方法,必须按照sql的规范转化为指定的sql语句.

理论依据:
userMapper.insert(user); //程序员只写到这里.
sql: insert into 表名(字段名…) values (属性值…);
按照用户的调用发方法,动态拼接sql.之后交给Mybatis去执行.
拼接sql:
insert into user表(字段A,字段B,字段C…) values (属性值A,属性B,属性C…);

2.6

2.6.1导入jar包

	<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.jt</groupId>
	<artifactId>springBootDemo2</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<!--parent标签作用:管理所有被springBoot整合之后的jar包的版本定义 springBoot特点: 开箱即用 引入jar包就可以添加相对应的功能. 
		定义了当前springBoot2.3.1所有的相关依赖的版本号信息. -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.1.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<java.version>1.8</java.version>
		<!--指定插件版本 -->
		<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
		<!--跳过测试类打包 -->
		<skipTests>true</skipTests>
	</properties>

	<dependencies>
		<!--在webjar包的内部关联整合了所有的springMVC的jar包信息. 所以只需要引入一个jar包,则可以关联整合所有的有关mvc的依赖包信息 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<!--添加属性注入依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>

		<!--支持热部署 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>

		<!--引入插件lombok 自动的set/get/构造方法插件 -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>

		<!--引入数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>

		<!--springBoot数据库连接 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>

		<!--spring整合mybatis-plus -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.2.0</version>
		</dependency>
	</dependencies>

	<!--负责项目打包 更新 maven操作相关的配置 必须添加 -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

2.6.2配置User对象

	package com.jt.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
@TableName   //与表进行关联  如果名称一致,则可以省略不写.
public class User {
	//属性一般都与表字段对应
	@TableId(type = IdType.AUTO)	//主键自增标识.
	private Integer id;
	//@TableField(value = "name")	//如果属性名称与字段名称一致(包含驼峰规则) 可以省略不写
	private String name;
	private Integer age;
	private String sex;
}


2.6.3 继承BaseMapper接口

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jt.pojo.User;

@Mapper
public interface UserMapper extends BaseMapper<User>{
	
	@Select("select * from user")
	List<User> findAll();

	
}

2.6.4 修改YML配置文件

mybatis-plus:
  type-aliases-package: com.jt.pojo
  
  mapper-locations: classpath:/mybatis/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true

2.6.5 MP入门案例

	@SpringBootTest	 //springBoot测试注解  开启了spring容器
public class TestMybatis {
	
	@Autowired
	private UserMapper userMapper;
	
	/**
	 * 以MP方式操作数据库,则以后单表操作不写sql.
	 */
	@Test
	public void findAll() {
		
		List<User> userList = userMapper.selectList(null);
		System.out.println(userList);
	}
	
}

2.6.6 开启日志

	server:
  port: 8090
  servlet:
    context-path: /
spring:
  datasource:
    #数据库驱动 高版本   com.mysql.cj.jdbc.Driver   
    #低版本                       com.mysql.jdbc.Driver   
    #driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

#引入mybatisplus配置
mybatis-plus:
  #定义别名包
  type-aliases-package: com.jt.pojo
  #添加映射文件
  mapper-locations: classpath:/mybatis/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true

#添加日志
logging:
  level:
    #mybatis指定mapper接口   以debug的形式展现日志.
    com.jt.mapper: debug

日志展现情况:
在这里插入图片描述

2.7 MybatisPlus API说明

2.7 查询测试

	/**
	 * 1.新增
	 */
	@Test
	public void insert() {
		User user = new User();
		user.setName("MybatisPlus入门")
			.setAge(18)
			.setSex("女");
		userMapper.insert(user);
		System.out.println("入库成功!!!");
	}
	
	/**
	 * 案例:查询Id=53的用户信息
	 * 参数充当where条件
	 */
	@Test
	public void select01() {
		
		User user = userMapper.selectById(53);
		System.out.println(user);
	}
	
	/**
	 * 案例:查询name="孙尚香" sex=女性  用户.
	 * queryWrapper:条件构造器    拼接where条件
	 * 逻辑运算符    =  eq, > gt , < lt
	 * 			  >= ge, <= le
	 */
	@Test
	public void select02() {
		//1.利用对象封装参数,实现数据查询  
		//注意事项:利用对象只能实现 "="号操作
		User user = new User();
		user.setName("孙尚香")
			.setSex("女");
		//根据对象中不为null的元素拼接where条件,默认条件下使用and连接符
		QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);
		List<User> userList = userMapper.selectList(queryWrapper);
		System.out.println(userList);
		
		//2.方法2  利用条件构造器构建where条件
		QueryWrapper<User> queryWrapper2 = new QueryWrapper<User>();
		queryWrapper2.eq("name", "孙尚香")
					 .eq("sex", "女");
		List<User> userList2 = userMapper.selectList(queryWrapper2);
		System.out.println(userList2);
		
	}

	/**
	 * 查询用户age<18岁 或者 age >100岁
	 */
	@Test
	public void select03() {
		QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
		queryWrapper.lt("age", 18)
					.or()
					.gt("age", 100);
 		List<User> userList = userMapper.selectList(queryWrapper);
 		System.out.println(userList);
	}
	
	/**
	 * 查询id= 1,3,6的用户
	 */
	@Test
	public void select04() {
		//1.api进行封装
		List<Integer> list = new ArrayList<>();
		list.add(1);
		list.add(3);
		list.add(6);
		List<User> userList	= userMapper.selectBatchIds(list);
		//2.条件构造器进行封装
		QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
		queryWrapper.in("id", 1,3,4,5);
		userMapper.selectList(queryWrapper);
		
	}
	
	@Test
	public void select05() {
		
		QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
		queryWrapper.between("字段", "值1", "值2");
		queryWrapper.like("name","精"); //包含精字    %精%
		queryWrapper.likeRight("name","精"); //以精开头     精%
		//queryWrapper.groupBy(column)    //分组查询!!!
	}
	
	//作业:利用MP知识:将常规sql进行实现.
	
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Spring Boot 是一个快速开发框架,MyBatisMyBatis-Plus 是两个流行的 ORM 框架,Spring Boot 与 MyBatis/MyBatis-Plus整合可以帮助我们更快更方便地进行开发。 下面是使用Java Spring Boot整合MyBatis/MyBatis-Plus的步骤: 1. 在 pom.xml 文件中添加 MyBatis/MyBatis-Plus 和 MySQL 驱动的依赖: ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> ``` 2. 在 application.properties/application.yml 文件中配置数据源和 MyBatis/MyBatis-Plus 的配置信息: ```yaml spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver mybatis.type-aliases-package=com.example.demo.entity mybatis-plus.mapper-locations=classpath:/mapper/*.xml ``` 3. 在 Spring Boot 启动类上添加 `@MapperScan` 注解,指定 MyBatis/MyBatis-Plus 的 Mapper 所在的包: ```java @SpringBootApplication @MapperScan("com.example.demo.mapper") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 4. 创建实体类和 Mapper 接口: ```java public class User { private Long id; private String name; private Integer age; // 省略 getter 和 setter 方法 } @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 5. 创建 Mapper 的 XML 文件(如果使用 MyBatis-Plus 可以省略此步骤): ```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="com.example.demo.mapper.UserMapper"> <resultMap id="BaseResultMap" type="com.example.demo.entity.User"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="age" property="age" /> </resultMap> <select id="selectById" resultMap="BaseResultMap"> select * from user where id = #{id} </select> </mapper> ``` 6. 在 Service 中使用 Mapper: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User getUserById(Long id) { return userMapper.selectById(id); } } ``` 这样就完成了 Java Spring Boot 整合 MyBatis/MyBatis-Plus 的基本步骤。需要注意的是,在使用 MyBatis-Plus 的情况下,Mapper 接口无需自己编写 CRUD 操作的方法,直接继承 `BaseMapper` 接口即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值