SpringBoot整合Mybatis演示
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演示相关推荐
- SpringBoot整合MyBatis并实现简单的查询功能
学了SpringBoot整合MyBatis才知道什么叫做省事,想当初用SSM的时候,那配置是真的多,SpringBoot真的是太友好了,到底有多好,接下来演示一个对数据库的查询功能,然初学者的我们大开 ...
- springboot 整合mybatis plus
简单介绍下 mybatis plus,mybatis plus(简称 MP)是一个 mybatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 本文讲解使用 ...
- Springboot整合Mybatis Plus
Springboot整合Mybatis Plus maven引入Mybatis Plus 编写配置文件 编写MybatisPlusConfig 编写代码生成器 运行代码生成器即可 maven引入Myb ...
- Springboot整合mybatis plus生成代码
一.Springboot整合mybatis plus生成代码 1.介绍 1.1.前言 从零开始搭建一个项目骨架,最好选择合适熟悉的技术,并且在未来易拓展,适合微服务化体系等.所以一般以Springbo ...
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...
SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...
- mybatis plugins_[MyBatis] SpringBoot 整合Mybatis
现在基本上搭建一个简单的工程都是三剑客 springboot+mybatis+redis 之前整合Mybatis 都是按照SSM来,所以,这一次带来SpringBoot+MyBatis 的快速整合 p ...
- SpringBoot整合Mybatis超详细流程
SpringBoot整合Mybatis超详细流程 文章目录 SpringBoot整合Mybatis超详细流程 前言 详细流程 0.引入Mybatis 1.创建数据 2.创建程序目录 3.理解后台访问流 ...
- SpringBoot整合Mybatis(高级)
SpringBoot整合Mybatis(高级) 文章目录 SpringBoot整合Mybatis(高级) 前言 基础环境配置 增删改查 ResultMap 复杂查询 多对一 一对多 动态SQL if ...
- 3、SpringBoot整合MyBatis注解版及配置文件版
目录 1.配置pom.xml 2.配置application.yml 3.配置DruidConfig关联yml的配置文件spring.datasource 4.创建数据库及数据库表结构 5.创建对应的 ...
最新文章
- 利用matlab对rosbag数据,通过matlab提取rosbag数据
- java实现linkstring,【JAVA SE基础篇】32.String类入门
- SQL Server安装计划
- JS异步模式与Promise模式
- Asp.Net Core轻量级Aop解决方案:AspectCore
- MyBatis 动态 SQL 底层原理分析
- Hyper-V 2012 R2 故障转移群集之建立域控(AD DS)与加入域
- python decorator. decorator_decorator在Python中的作用
- java访问控制关键字_Java 访问控制关键字
- ---Ubuntu 下安装oracle Java
- 最优化方法——Newton方法
- 惠普m227fdw引擎通信错误_惠普打印机HPM227提示耗材余量错误怎么办?
- 建站用Windows还是Linux,建站该选择Windows系统还是Linux系统
- 泰勒公式(泰勒展开式,泰勒中值定理)使用基本技巧
- 2020最后一天,一起回顾这不平凡的一年...
- SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
- K8s 污点(Taints)与容忍(Tolerations)
- 全国大学生智能车竞赛2022年-智能汽车竞赛发展沙龙
- 基于FPGA的呼吸灯设计
- Python-rot13-替换式密码