SpringBoot整合Mybatis演示

1.环境准备

  • JDK 1.8
  • MySQL 5.7
  • Maven 3.6.3
  • Idea 2020.1.1

数据库模拟数据准备:

CREATE DATABASE `springboot01`;
USE `springboot01`;CREATE TABLE `table_emp` (`emp_id` int(11) NOT NULL AUTO_INCREMENT,`emp_name` varchar(50) NOT NULL,`emp_age` int(11) NOT NULL,`emp_birthday` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`emp_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert  into `table_emp`(`emp_name`,`emp_age`,`emp_birthday`) values ('ara',20,'2020-07-28 23:21:38'),('胡',20,'2020-07-28 23:21:38');

2.搭建SpringBoot项目

使用Idea创建一个SpringBoot的空项目,添加依赖如下:

<!--MySQL连接驱动-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency><!--Mybatis与SpringBoot整合的启动器-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version>
</dependency><!--lombok:偷懒工具,使用其注解可以省略pojo类的方法编写-->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

在pojo包下创建与数据库匹配的实体类

package com.ara.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;/*** 测试员工类* @author Ara*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {private int empId;private String empName;private int empAge;private Date empBirthday;}

配置SpringBoot的配置文件(application.yaml),这里配置数据源的连接配置和Mybatis的配置,如下:

spring:# 数据源的配置datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/springboot01?serverTimezone=GMT%2B8username: rootpassword: 123456
mybatis:# 别名包type-aliases-package: com.ara.pojo# mapper.xml文件地址mapper-locations: classpath:mybatis/mapper/*.xmlconfiguration:# 开启驼峰命名转换map-underscore-to-camel-case: true

在主启动类的同级目录下创建mapper包,然后在里面创建EmpMapper接口如下:

package com.ara.mapper;import com.ara.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;import java.util.List;/*** Mybatis数据库操作测试** @author Ara*/
@Mapper
@Repository
public interface EmpMapper {/*** 查询所有的员工信息* @return 员工信息列表*/List<Emp> getAllEmp();}

然后在resources目录下创建mybatis文件夹,并在其中创建mapper文件夹,然后在mapper文件夹中编写EmpMapper.xml文件(注意这里的路径要和配置文件中mapper.xml文件地址一致),如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ara.mapper.EmpMapper"><select id="getAllEmp" resultType="Emp">select * from table_emp;</select>
</mapper>

到此,查询的方法就算是写完了,然后我们进行测试,在测试启动类中添加如下:

@Autowired
private EmpMapper empMapper;@Test
void contextLoads() {List<Emp> empList = empMapper.getAllEmp();for (Emp emp : empList) {System.out.println(emp);}}

测试结果如下:

表示我们的配置和代码编写都没有问题。

3.补充增删改

上面我们对数据库进行了查询操作,接下来我们就完成简单的增删改功能。

在EmpMapper接口中添加如下方法:

/*** 插入数据* @param emp 待插入数据* @return 受影响行数*/
int insertEmp(Emp emp);

EmpMapper.xml:

<insert id="insertEmp" parameterType="Emp">insert into table_emp (emp_name,emp_age,emp_birthday)values (#{empName},#{empAge},#{empBirthday});
</insert>

测试代码:

@Test
void insertTest(){Emp insertEmp = new Emp();insertEmp.setEmpName("admin");insertEmp.setEmpAge(18);insertEmp.setEmpBirthday(new Date());empMapper.insertEmp(insertEmp);//查询验证List<Emp> empList = empMapper.getAllEmp();for (Emp emp : empList) {System.out.println(emp);}}

测试结果:

删除

EmpMapper接口:

/*** 删除数据* @param id 待删除数据的Id* @return 受影响的行数*/
int deleteEmpById(int id);

EmpMapper.xml:

<delete id="deleteEmpById" parameterType="int">delete from table_emp where emp_id = #{id};
</delete>

测试代码:

@Test
void deleteTest(){empMapper.deleteEmpById(3);//查询验证List<Emp> empList = empMapper.getAllEmp();for (Emp emp : empList) {System.out.println(emp);}
}

测试结果:

修改

EmpMapper接口:

/*** 修改数据* @param emp 待修改数据* @return 受影响行数*/
int updateEmpById(Emp emp);

EmpMapper.xml:

<update id="updateEmpById" parameterType="Emp">update table_emp setemp_name =  #{empName},emp_age = #{empAge},emp_birthday = #{empBirthday}whereemp_id = #{empId};
</update>

测试代码:

@Test
void updateTest(){Emp updateEmp = new Emp();updateEmp.setEmpId(2);updateEmp.setEmpName("admin");updateEmp.setEmpAge(18);updateEmp.setEmpBirthday(new Date());empMapper.updateEmpById(updateEmp);//查询验证List<Emp> empList = empMapper.getAllEmp();for (Emp emp : empList) {System.out.println(emp);}}

测试结果:

到此就表明我们简单的数据库操作就已经成功了。

4.补充说明

上面我们编写的测试,重心基本都在业务逻辑上,我们做的很少,就是因为SpringBoot帮我们都做了,比如数据库连接,甚至我们还发现它还有自己默认的数据库连接池(Hikari),刚刚我们并未显式的指定数据库连接池,所以就使用了默认的配置,如果我们需要自定义其他的数据库连接池类型,我们只需要在配置中指定即可。

举个例子:如果我们在上面的基础上,将数据库连接池类型换成阿里巴巴的druid,我们只需要在pom文件中导入druid的依赖,然后将数据源的类型指定为druid即可:

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.21</version>
</dependency>


这样就成功的更换了数据库的连接池类型。

如果需要更加详细的日志打印在控制台上,比如上面的例子,我们想要查看运行的Sql语句,我们只需要在配置文件中添加一个配置即可:

logging:level:# 对应的包:日志级别com.ara.mapper: debug

这样就设置了打印com.ara.mapper包下级别为debug的日志。

SpringBoot整合Mybatis演示相关推荐

  1. SpringBoot整合MyBatis并实现简单的查询功能

    学了SpringBoot整合MyBatis才知道什么叫做省事,想当初用SSM的时候,那配置是真的多,SpringBoot真的是太友好了,到底有多好,接下来演示一个对数据库的查询功能,然初学者的我们大开 ...

  2. springboot 整合mybatis plus

    简单介绍下 mybatis plus,mybatis plus(简称 MP)是一个 mybatis  的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 本文讲解使用 ...

  3. Springboot整合Mybatis Plus

    Springboot整合Mybatis Plus maven引入Mybatis Plus 编写配置文件 编写MybatisPlusConfig 编写代码生成器 运行代码生成器即可 maven引入Myb ...

  4. Springboot整合mybatis plus生成代码

    一.Springboot整合mybatis plus生成代码 1.介绍 1.1.前言 从零开始搭建一个项目骨架,最好选择合适熟悉的技术,并且在未来易拓展,适合微服务化体系等.所以一般以Springbo ...

  5. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...

    SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...

  6. mybatis plugins_[MyBatis] SpringBoot 整合Mybatis

    现在基本上搭建一个简单的工程都是三剑客 springboot+mybatis+redis 之前整合Mybatis 都是按照SSM来,所以,这一次带来SpringBoot+MyBatis 的快速整合 p ...

  7. SpringBoot整合Mybatis超详细流程

    SpringBoot整合Mybatis超详细流程 文章目录 SpringBoot整合Mybatis超详细流程 前言 详细流程 0.引入Mybatis 1.创建数据 2.创建程序目录 3.理解后台访问流 ...

  8. SpringBoot整合Mybatis(高级)

    SpringBoot整合Mybatis(高级) 文章目录 SpringBoot整合Mybatis(高级) 前言 基础环境配置 增删改查 ResultMap 复杂查询 多对一 一对多 动态SQL if ...

  9. 3、SpringBoot整合MyBatis注解版及配置文件版

    目录 1.配置pom.xml 2.配置application.yml 3.配置DruidConfig关联yml的配置文件spring.datasource 4.创建数据库及数据库表结构 5.创建对应的 ...

最新文章

  1. 利用matlab对rosbag数据,通过matlab提取rosbag数据
  2. java实现linkstring,【JAVA SE基础篇】32.String类入门
  3. SQL Server安装计划
  4. JS异步模式与Promise模式
  5. Asp.Net Core轻量级Aop解决方案:AspectCore
  6. MyBatis 动态 SQL 底层原理分析
  7. Hyper-V 2012 R2 故障转移群集之建立域控(AD DS)与加入域
  8. python decorator. decorator_decorator在Python中的作用
  9. java访问控制关键字_Java 访问控制关键字
  10. ---Ubuntu 下安装oracle Java
  11. 最优化方法——Newton方法
  12. 惠普m227fdw引擎通信错误_惠普打印机HPM227提示耗材余量错误怎么办?
  13. 建站用Windows还是Linux,建站该选择Windows系统还是Linux系统
  14. 泰勒公式(泰勒展开式,泰勒中值定理)使用基本技巧
  15. 2020最后一天,一起回顾这不平凡的一年...
  16. SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
  17. K8s 污点(Taints)与容忍(Tolerations)
  18. 全国大学生智能车竞赛2022年-智能汽车竞赛发展沙龙
  19. 基于FPGA的呼吸灯设计
  20. Python-rot13-替换式密码

热门文章

  1. java实现xml的xsd验证_Java通过XML Schema校验XML
  2. linux sda sda1区别,linux – / dev / sda和/ dev / sda1之间的区别
  3. windbg调试ACPI ASL Code 实例一则
  4. Python 多线程曲线救国
  5. 23种设计模式——JDK动态代理(AOP)
  6. 基于改进层次凝聚聚类算法的垃圾收运跨区域调度策略
  7. NLP学院网:李斌NLP关键执行:由谁去给猫挂铃铛?
  8. Arduino直流电动机控制
  9. 归一化谱聚类NCUT(matlab实现)
  10. Python爬取淘宝图片