SpringBoot整合mybatis的方法详解

目录
  • 1依赖配置
  • 2使用
    • 2.1SpringBoot配置整合mybatis:
    • 2.2SpringBoot注解整合mybatis:
    • 2.3在配置类上增加@MapperScan注解,扫描某个包下的全部Mapper文件:
  • 总结

1 依赖配置

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version>
</parent>
<dependencies>
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
     <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <version>1.18.22</version>
     </dependency>
	 <dependency>
	     <groupId>org.mybatis.spring.boot</groupId>
	     <artifactId>mybatis-spring-boot-starter</artifactId>
	     <version>1.3.2</version>
	 </dependency>
	 <!--     spring连接驱动时,如com.mysql.cj.jdbc.Driver使用   -->
     <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

找到mybatis-spring-boot-starter配置的依赖,即autotoconfigure包,SpringBoot的自动配置,会找到META-INF下的spring.factories,找到EnableAutoConfiguration对应的类:

可知自动配置类为MybatisAutoConfiguration:

查看配置绑定类MybatisProperties,可知yml中前缀配置为mybatis:

可知,mybatis前缀的yml配置,可以配置属性,比如:configLocationmapperLocationstypeAliasesPackage等等。

mybatis下,又具有@NestedConfigurationProperty成员变量,故而前缀是mybatis.configuration,其中具有如下属性:

其中有非常熟悉的属性:mapUnderscoreToCamelCase,也就是数据库字段下划线转驼峰的配置。

然后,数据源有如下配置:

数据源的配置绑定是DataSourceProperties

可知,数据源在yml中以spring.datasource为前缀,可配置连接数据源的driverClassNameurlusernamepassword等参数。

2 使用

2.1 SpringBoot配置整合mybatis:

建表:

实体类(mybatis本质上将数据库表的数据和实体类对应,就是依靠的getter和setter,所以@Data是必须有的):

package com.xiaoxu.boot.dto;
import lombok.Data;
import java.util.Date;
/**
 * @author xiaoxu
 * @date 2022-03-08
 * spring_boot:com.xiaoxu.boot.dto.PeopleDTO
 */
@Data
public class PeopleDTO {
    // 人的id编号
    long id;
    // 人的名字
    String myName;
    // 年龄
    int myAge;
    // 出生日期
    Date birthday;
}

新建Mapper接口:

注意mapper接口必须要有@Mapper注解:

package com.xiaoxu.boot.mapper;
import com.xiaoxu.boot.dto.PeopleDTO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface PeopleMapper {
    List<PeopleDTO> queryPeopleByAge(int age);
}

在resources目录下准备mybatis的配置文件,以及Mapper文件:

mybatis-confi.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>

<?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.xiaoxu.boot.mapper.PeopleMapper">
    <select id="queryPeopleByAge" resultType="com.xiaoxu.boot.dto.PeopleDTO">
        select * from my_people where my_age = #{age}
    </select>
</mapper>

在application.yml中配置如下:

spring:
  datasource:
    username: root
    password: ******
    url: jdbc:mysql://localhost:3306/xiaoxu?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver

#mybatis的相关配置
mybatis:
  #mapper配置文件
  mapper-locations: classpath:mapper/*.xml
#  #mybatis配置文件
#  config-location: classpath:mybatis-config.xml
#  config-location和configuration不能同时存在
  #开启驼峰命名
  configuration:
    map-underscore-to-camel-case: true

插入测试数据:

service层实现:

package com.xiaoxu.service;
import com.xiaoxu.boot.dto.PeopleDTO;
import com.xiaoxu.boot.mapper.PeopleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * @author xiaoxu
 * @date 2022-03-08
 * spring_boot:com.xiaoxu.service.PeopleService
 */
@Service
public class PeopleService {
    @Autowired
    PeopleMapper peopleMapper;
    public List<PeopleDTO> getPeoples(int Age){
        return peopleMapper.queryPeopleByAge(Age);
    }
}

controller层实现:

package com.xiaoxu.boot.controller;
import com.xiaoxu.boot.dto.PeopleDTO;
import com.xiaoxu.service.PeopleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * @author xiaoxu
 * @date 2022-03-08
 * spring_boot:com.xiaoxu.boot.controller.PeopleController
 */
@RestController
public class PeopleController {
    @Autowired
    PeopleService peopleService;
    @GetMapping("/people")
    public List<PeopleDTO> queryPeople(@RequestParam(value = "ag") int age){
        return peopleService.getPeoples(age);
    }
}

执行结果无误:

2.2 SpringBoot注解整合mybatis:

修改Mapper接口文件:

package com.xiaoxu.boot.mapper;
import com.xiaoxu.boot.dto.PeopleDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface PeopleMapper {
    List<PeopleDTO> queryPeopleByAge(int age);
    @Select("select * from my_people")
    List<PeopleDTO> queryAllPeople();
}

修改服务层:

package com.xiaoxu.service;
import com.xiaoxu.boot.dto.PeopleDTO;
import com.xiaoxu.boot.mapper.PeopleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * @author xiaoxu
 * @date 2022-03-08
 * spring_boot:com.xiaoxu.service.PeopleService
 */
@Service
public class PeopleService {
    @Autowired
    PeopleMapper peopleMapper;
    public List<PeopleDTO> getPeoples(int Age){
        return peopleMapper.queryPeopleByAge(Age);
    }
    public List<PeopleDTO> getAllPeople(){
        return peopleMapper.queryAllPeople();
    }
}

增加controller:

package com.xiaoxu.boot.controller;
import com.xiaoxu.boot.dto.PeopleDTO;
import com.xiaoxu.service.PeopleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * @author xiaoxu
 * @date 2022-03-08
 * spring_boot:com.xiaoxu.boot.controller.PeopleController
 */
@RestController
public class PeopleController {
    @Autowired
    PeopleService peopleService;
    @GetMapping("/people")
    public List<PeopleDTO> queryPeople(@RequestParam(value = "ag") int age){
        return peopleService.getPeoples(age);
    }
    @GetMapping("/allPeople")
    public List<PeopleDTO> queryAllPeople(){
        return peopleService.getAllPeople();
    }
}

结果返回无误:

2.3 在配置类上增加@MapperScan注解,扫描某个包下的全部Mapper文件:

如果每个Mapper接口文件上增加@Mapper比较麻烦,那么可以在配置类,如主程序类上,增加@MapperScan注解,以及扫描路径,效果和@Mapper一致:

主程序类增加@MapperScan注解:

重新执行效果一致:

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • SpringBoot2.0整合tk.mybatis异常解决

    pom配置如下(标准简易版): <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <properties> <java.version>1.8&

  • SpringBoot整合Mybatis Plus多数据源的实现示例

    目录 导读 添加依赖 application.properties 2种方式创建DataSource Master配置,使用druid连接池 Slave配置 启动类 演示 导读 有一个这样子的需求,线上正在跑的业务,由于业务发展需要,需重新开发一套新系统,等新系统开发完成后,需要无缝对接切换,当初具体设计见草图. 添加依赖 <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <

  • tk-mybatis整合springBoot使用两个数据源的方法

    目录 一.配置连接信息  二.配置DataSource数据源 三.Application配置 四.Mapper代码结构 补充: 根据项目功能需求,需要与第三方公共库对接,需要对公共库进行相关操作,由于不想使用原生jdbc,所以采用mybaits进行多数据配置. 单纯的使用mybaits进行多数据配置网上资料很多,但由于前期为了方便开发,采用了tk-mybaits.关于tk-mybaits多数据源配置没有相关材料,官方也没有提供相关功能说明,所以最终采用mybatis+tk-mybaits分别使用

  • springboot整合springsecurity与mybatis-plus的简单实现

    1.概述 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架. 它是用于保护基于Spring的应用程序的实际标准. Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权. 与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求 springboot对于springSecurity提供了自动化配置方案,可以使用更少的配置来使用springsecurity 而在项目开发中,主要用于对用户的

  • SpringBoot整合Mybatis LocalDateTime 映射失效的解决

    目录 SpringBoot整合Mybatis LocalDateTime映射失效 一.概述 二.具体原因 三.解决办法 四.小结一下 使用LocalDateTime报错问题 解决方法 SpringBoot整合Mybatis LocalDateTime映射失效 一.概述 最近在开发一个项目,在使用SpringBoot继承Mybatis时,做单元测试时,由于需要根据参数(类型LocaDateTime)去更新数据,发现更新记录为0. 刚开始以为是没有提交事务(Mybatis默认没有开启自动提交),后来

  • SpringBoot整合MyBatis-Plus的示例代码

    目录 前言 源码 环境 开发工具 SQL脚本 正文 单工程 POM文件(注意) application.properties(注意) 自定义配置(注意) 实体类(注意) Mapper接口(注意) Service服务实现类(注意) Controller前端控制器(注意) SpringBoot启动类(注意) 启用项目,调用接口(注意) 多工程 commons工程-POM文件 MyBatis-Plus commons工程-system.properties commons工程- 自定义配置 commo

  • SpringBoot整合mybatis的方法详解

    目录 1依赖配置 2使用 2.1SpringBoot配置整合mybatis: 2.2SpringBoot注解整合mybatis: 2.3在配置类上增加@MapperScan注解,扫描某个包下的全部Mapper文件: 总结 1 依赖配置 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> &l

  • springBoot整合rabbitMQ的方法详解

    引入pom <?xml version="1.0" encoding="UTF-8"?> <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

  • SpringBoot整合Shiro的方法详解

    目录 1.Shito简介 1.1 什么是shiro 1.2 有哪些功能 2.QuickStart 3.SpringBoot中集成 1.导入shiro相关依赖 2.自定义UserRealm 3.定义shiroConfig 4.新建页面进行测试 1.Shito简介 1.1 什么是shiro Apache Shiro是一个java安全(权限)框架 Shiro可以非常容易的开发出足够好的应用,其不仅可以用在javase环境,也可以用在javaee环境 shiro可以完成,认证,授权,加密,会话管理,we

  • Spring利用注解整合Mybatis的方法详解

    目录 一.环境准备 步骤1:数据库相关 步骤2:导入jar包 步骤3:创建模型类 步骤4:创建Dao接口和实现类 步骤5:创建Service接口和实现类 步骤6:添加jdbc.properties文件 步骤7:添加Mybatis核心配置文件 步骤8:编写测试程序 二.整合思路分析 三.整合步骤 步骤1:导入整合jar包 步骤2:创建数据源配置类 步骤3:创建Mybatis配置类 步骤4:创建Spring主配置类 步骤5:编写运行程序 一.环境准备 步骤1:数据库相关 建库建表 创建spring_

  • SpringBoot整合RocketMQ的方法详解

    目录 一:Ubuntu安装RocketMQ 二:添加RocketMQ依赖 三:在application中添加RocketMQ配置 四:编写消费者,消息生产者,消息实体类(自定义) 五:测试Controller 一:Ubuntu安装RocketMQ 1.下载(在下面地址选择自己需要的版本的rocketmq) http://rocketmq.apache.org/release_notes/ 2.解压,更改配置 将下载的zip文件解压到自己需要安装的位置 在unbuntu系统下需要修改安装跟目录下的

  • SpringBoot整合MyBatis的代码详解

    目录 SpringBoot整合MyBatis 依赖的导入 大致目录 相关文件配置 创建数据库和相对应的Pojo类 Service层的编写 Controller层的编写 登录测试 SpringBoot整合MyBatis 依赖的导入 整合mybatis之前我们需要相对应的导入相关依赖. <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-s

  • springboot整合solr的方法详解

    这一篇写一下springboot整合solr,代码已经上传到github,传送门. 1.新建core并配置schema solr create -c "book_core" ,配置分词器并且field类型定义为分词器类型. <fieldType name="ik_word" class="solr.TextField"> <analyzer type="index"> <tokenizer cla

  • springboot整合mybatisplus的方法详解

    目录 POM: application.yaml: POJO: mapper接口: 包扫描: 测试: 总结 POM: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <dependenc

  • SpringBoot实现整合微信支付方法详解

    目录 1.准备工作 1.1 数据库表 1.2 实体类 1.3 导入依赖 1.4 配置文件 1.5 创建读取微信支付相关信息的工具类 1.6 其他工具类 2.生成订单 2.1 远程调用用户模块和课程模块 2.2 远程调用方法的实现 2.3 根据课程id和用户id生成订单 3.查询订单信息 3.1 controller层 3.2 service层 4.生成微信支付的二维码 4.1 controller层 4.2 service层 5.查询订单支付状态 5.1 controller层 5.2 serv

  • SpringBoot整合Shiro的代码详解

    shiro是一个权限框架,具体的使用可以查看其官网 http://shiro.apache.org/  它提供了很方便的权限认证和登录的功能. 而springboot作为一个开源框架,必然提供了和shiro整合的功能!接下来就用springboot结合springmvc,mybatis,整合shiro完成对于用户登录的判定和权限的验证. 1.准备数据库表结构 这里主要涉及到五张表:用户表,角色表(用户所拥有的角色),权限表(角色所涉及到的权限),用户-角色表(用户和角色是多对多的),角色-权限表

随机推荐