SpringBoot整合Mybatis演示

11 篇文章 0 订阅
6 篇文章 0 订阅

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.Driver
    url: jdbc:mysql://localhost:3306/springboot01?serverTimezone=GMT%2B8
    username: root
    password: 123456
mybatis:
  # 别名包
  type-aliases-package: com.ara.pojo
  # mapper.xml文件地址
  mapper-locations: classpath:mybatis/mapper/*.xml
  configuration:
    # 开启驼峰命名转换
    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 mapper
        PUBLIC "-//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 set
    emp_name =  #{empName},
    emp_age = #{empAge},
    emp_birthday = #{empBirthday}
    where
    emp_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的日志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值