Springboot整合三之Springboot整合mybatis

比眉伴天荒 2022-05-23 03:58 482阅读 0赞

前言

继前两篇springboot整合案例,今天我们来说说springboot整合mybatis

1.创建工程

这里博主就不多说了,直接贴图

70

2.添加依赖

  1. <dependency>
  2. <groupId>mysql</groupId>
  3. <artifactId>mysql-connector-java</artifactId>
  4. <scope>runtime</scope>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.mybatis.spring.boot</groupId>
  8. <artifactId>mybatis-spring-boot-starter</artifactId>
  9. <version>1.3.2</version>
  10. </dependency>

这里添加了mysql和mybatis的依赖

3.配置yml

  1. server:
  2. port: 8080
  3. spring:
  4. datasource:
  5. driver-class-name: com.mysql.jdbc.Driver
  6. url: jdbc:mysql://localhost:3306/test
  7. hikari:
  8. username: root
  9. password: 123
  10. mybatis:
  11. mapper-locations: classpath:mapper/**/*.xml # mapper文件的路径

4.编码

首先,我们先建张数据表,就叫user吧

  1. CREATE TABLE `t_user` (
  2. `id` bigint(20) NOT NULL,
  3. `name` varchar(11) DEFAULT NULL,
  4. `email` varchar(22) DEFAULT NULL,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8

User.java

  1. package com.space.mybatis.cache.bo;
  2. import lombok.Data;
  3. /**
  4. * @author zhuzhe
  5. * @date 2018/5/8 13:29
  6. */
  7. @Data
  8. public class User {
  9. private Long id;
  10. private String userName;
  11. private String email;
  12. }

UserMapper.java

  1. package com.space.mybatis.cache.mapper;
  2. import com.space.mybatis.cache.bo.User;
  3. import org.apache.ibatis.annotations.Mapper;
  4. import org.springframework.stereotype.Component;
  5. import java.util.List;
  6. /**
  7. * @author zhuzhe
  8. * @date 2018/5/8 13:29
  9. */
  10. @Component
  11. @Mapper
  12. public interface UserMapper {
  13. int save(User user);
  14. List<User> getAll();
  15. int delete(Long id);
  16. }

UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3. <mapper namespace="com.space.mybatis.cache.mapper.UserMapper" >
  4. <resultMap id="BaseResultMap" type="com.space.mybatis.cache.bo.User" >
  5. <id column="id" property="id" jdbcType="BIGINT" />
  6. <result column="name" property="userName" jdbcType="VARCHAR" />
  7. <result column="email" property="email" jdbcType="VARCHAR" />
  8. </resultMap>
  9. <insert id="save" parameterType="com.space.mybatis.cache.bo.User" >
  10. insert into t_user (id, name, email)
  11. values (#{id,jdbcType=BIGINT}, #{userName,jdbcType=VARCHAR},
  12. #{email,jdbcType=VARCHAR})
  13. </insert>
  14. <select id="getAll" resultMap="BaseResultMap">
  15. select * from t_user
  16. </select>
  17. <delete id="delete" parameterType="java.lang.Long">
  18. delete from t_user where id = #{id}
  19. </delete>
  20. </mapper>

5.测试

编写测试类 UserController.java

  1. package com.space.mybatis.cache.controller;
  2. import com.space.mybatis.cache.bo.User;
  3. import com.space.mybatis.cache.mapper.UserMapper;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.PathVariable;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.RestController;
  9. import java.util.List;
  10. /**
  11. * @author zhuzhe
  12. * @date 2018/5/8 13:30
  13. */
  14. @RequestMapping("/user")
  15. @RestController
  16. @Slf4j
  17. public class UserController {
  18. @Autowired
  19. private UserMapper userMapper;
  20. @RequestMapping("/add")
  21. public String testAdd(User user){
  22. log.info(user.toString());
  23. userMapper.save(user);
  24. return user.toString();
  25. }
  26. @RequestMapping("/get")
  27. public List<User> testAdd(){
  28. return userMapper.getAll();
  29. }
  30. @RequestMapping("/delete/{id}")
  31. public String delete(@PathVariable("id") Long id){
  32. userMapper.delete(id);
  33. return "delete";
  34. }
  35. }

在这里我们使用postman进行测试:

先测试添加:

70 1

可以看到返回结果:

70 2

数据库也已经添加成功。

70 3

测试get:

70 4

OK!delete方法在此不多做演示。

至此,springboot整合mybatis就完成了。

6.实现mybatis的二级缓存

其实,要实现mybatis的二级缓存也是很EASY的。下面我们就来说说:

首先,在application.yml文件中进行配置

70 5

然后,我们在UserMapper.xml中进行详细配置:在xml中添加如下代码

  1. <!--
  2. eviction LRU
  3. flushInterval缓存时间,以毫秒为单位
  4. size缓存大小
  5. readOnly如果为false的话,缓存对象必须是可序列化的
  6. readOnly=true 当查询时,与上一次执行查询的时间差距小于
  7. flushInterval缓存时间,直接从缓存里取
  8. -->
  9. <cache eviction="LRU"
  10. type="org.apache.ibatis.cache.impl.PerpetualCache"
  11. flushInterval="60000"
  12. size="1024"
  13. readOnly="true"/>

同时,在语句中需要添加 userCache=’true’

其实,在我们的项目中,往往不会直接使用Mybatis的二级缓存,现在比较主流的一般会使用redis去实现。

这个博主之前也有写过,以下是源码地址,大家感兴趣的可以看看:

https://github.com/zhuzhegithub/springboot-redis-mybatis

转载请务必保留此出处(原作者):https://blog.csdn.net/zhuzhezhuzhe1

版权声明:本文为原创文章,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。

https://blog.csdn.net/zhuzhezhuzhe1

发表评论

表情:
评论列表 (有 0 条评论,482人围观)

还没有评论,来说两句吧...

相关阅读