栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

Spring boot mybatis 简单示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring boot mybatis 简单示例

我在Spring boot中集成mybatis竟然花了不少时间,真没想到。对着官网的文档做,竟然还花了这么多时间。所以我把过程尽可能的详细记录下来,给有需要的朋友。

需求

在spring boot 中使用mybatis。

官方文档

使用开源组件,最棒的文档就是官方文档了。然而我在看文档时发现了一些小坑,我看文档的顺序如下:

  • 《mybatis》
    什么是 MyBatis?
    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
    https://mybatis.org/mybatis-3/zh/index.html
    这个是讲mybatis的通用方法,不是针对spring的。我把这些文档看完,还是没有完美解决 spring boot中完美的集成mybatis。经过摸索才发现mybatis有个子项目《mybatis-spring》。

  • 《mybatis-spring》
    什么是 MyBatis-Spring?
    MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。 最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。
    https://mybatis.org/mybatis-3/zh/configuration.html

经过摸索和踩坑,我又发现这个项目还有一个子项目《mybatis-spring-boot-autoconfigure》。

  • 《mybatis-spring-boot-autoconfigure》
    MyBatis-Spring-Boot-Starter 帮助您在Spring Boot之上快速构建 MyBatis 应用程序。
    https://mybatis.org/spring/zh/boot.html

事实上对我的需要最有用的就是最后一个文档:
https://mybatis.org/spring/zh/boot.html
看前面两个文档属实让人浪费了不少时间了。

实践记录

建议大家自行查看官方的文档来练习,如果遇到坑在对照这篇文章看看。
https://mybatis.org/spring/zh/boot.html
以下内容源于官网文档的练习。

源码下载

我把我测试的代码,打包分享给大家。

https://download.csdn.net/download/lxyoucan/86341756

建表

在这里以mysql为例操作。

-- auto-generated definition
create table CITY
(
    city_id   bigint auto_increment comment '城市ID'
        primary key,
    city_name varchar(50)              not null comment '城市名称',
    state    varchar(10) default 'CA' null comment '省'
)
    comment '城市';

insert into CITY (city_name, state) values ('北京','beijing');
insert into CITY (city_name, state) values ('南京','jiangsu');
insert into CITY (city_name, state) values ('上海','shanghai');

select * from CITY where state='beijing';
pom.xml

MyBatis-Spring-Boot/pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.7.2
         
    
    cn.ycmit
    MyBatis-Spring-Boot
    0.0.1-SNAPSHOT
    MyBatis-Spring-Boot
    Demo project for Spring Boot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.2.2
        

        
        
            mysql
            mysql-connector-java
        

    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



实体类

MyBatis-Spring-Boot/src/main/java/cn/ycmit/mybatis/domain/City.java

package cn.ycmit.mybatis.domain;

public class City {
    private static final long serialVersionUID = 1L;

    private Long city_id;
    private String city_name;
    private String state;

    public City() {
    }

    public Long getCity_id() {
        return city_id;
    }

    public void setCity_id(Long city_id) {
        this.city_id = city_id;
    }

    public String getCity_name() {
        return city_name;
    }

    public void setCity_name(String city_name) {
        this.city_name = city_name;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    @Override
    public String toString() {
        return "City{" +
                "city_id=" + city_id +
                ", city_name='" + city_name + ''' +
                ", state='" + state + ''' +
                '}';
    }
}

mapper

MyBatis-Spring-Boot/src/main/java/cn/ycmit/mybatis/mapper/CityMapper.java

package cn.ycmit.mybatis.mapper;

import cn.ycmit.mybatis.domain.City;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface CityMapper {

    @Select("SELECT * FROM CITY WHERe state = #{state}")
    City findByState(@Param("state") String state);

}

启动类

MyBatis-Spring-Boot/src/main/java/cn/ycmit/mybatis/MyBatisSpringBootApplication.java
主要简化代码,便于理解,实际项目中一般不会这么写。这样写省的写测试类了。

package cn.ycmit.mybatis;

import cn.ycmit.mybatis.mapper.CityMapper;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyBatisSpringBootApplication implements CommandLineRunner {

    private final CityMapper cityMapper;

    public MyBatisSpringBootApplication(CityMapper cityMapper) {
        this.cityMapper = cityMapper;
    }

    public static void main(String[] args) {
        SpringApplication.run(MyBatisSpringBootApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println(this.cityMapper.findByState("beijing"));
    }

}

application.yml

MyBatis-Spring-Boot/src/main/resources/application.yml
主要是数据源相关的配置。

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://128.0.0.1:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
    username: root
    password: itkey123457

controller注入演示

MyBatis-Spring-Boot/src/main/java/cn/ycmit/mybatis/controller/SqlApiController.java

package cn.ycmit.mybatis.controller;
import cn.ycmit.mybatis.domain.City;
import cn.ycmit.mybatis.mapper.CityMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SqlApiController {
    @Autowired
    CityMapper mapper;
    
    @RequestMapping("/city")
    public City city()
    {
        City city =mapper.findByState("beijing");
        return city;
    }
}

这样访问 http://localhost:8080/city
就会得到如下结果:

{"city_id":1,"city_name":"北京","state":"beijing"}
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039466.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号