你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

六、spring boot教程--集成mybatis

2021/12/9 21:43:57

一、mybatis介绍

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

二、mybatis使用方法

2.1 引入mybatis的jar包

 <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>

2.2 spring boot启动类中加入mapper层注解

@SpringBootApplication
@MapperScan("com.cy.store.mapper")
public class Application {

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

@MapperScan(“com.cy.store.mapper”)意思是扫描com.cy.store.mapper下的所有类作为Mapper映射文件

2.3 yaml配置

注:本文中的数据库为mysql 8.0

server:
  port: 8090

# 配置数据源
spring:
  datasource:
    url: jdbc:mysql://ip:port/databasename?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: username
    password: password
#mybatis配置
mybatis:
  config-location: classpath:mybatis-config.xml
  mapper-locations: classpath*:mybatis/mapper/*.xml

2.4 逻辑代码

2.4.1 model层代码

package com.cy.store.model;

public class Category {
    private String id;
    private String name;
    private Integer count;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }
}

2.4.2 mapper层代码

package com.cy.store.mapper;

import com.cy.store.model.Category;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface CategoryMapper {
    List<Category> getAll();
    Category find(String id);
    int insert(Category category);
    int delete(String id);
}

对应的mybatis xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cy.store.mapper.CategoryMapper">
    <select id="getAll" resultType="com.cy.store.model.Category">
        select * from t_category
    </select>

    <select id="find" resultType="com.cy.store.model.Category">
        select * from t_category where  id = #{id}
    </select>

    <insert id="insert" keyProperty="id" keyColumn="id" parameterType="com.cy.store.model.Category">
        insert into t_category(id,name,count) values(#{id,},#{name},#{count})
    </insert>

    <update id="update" parameterType="com.cy.store.model.Category">
        update t_category
        <set>
            <if test="name !=null">name=#{name}</if>
            <if test="count !=null">count=#{count}</if>
        </set>
        where  id = #{id}
    </update>

    <delete id="delete">
        delete t_category where  id = #{id}
    </delete>
</mapper>

2.4.3 controller层代码

package com.cy.store.controller;

import com.cy.store.mapper.CategoryMapper;
import com.cy.store.model.Category;
import com.cy.store.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/Category")
public class CategoryController {
    @Autowired
    private CategoryDao categoryMapper;
    
    @GetMapping("")
    public Result findAll() {
        List<Category> categories = categoryMapper.getAll();
        return new Result(categories);
    }
    
    @GetMapping("/{id}")
    public Result findById(@PathVariable String id) {
        Category category = categoryMapper.find(id);
        return new Result(category);
    }


    @PutMapping("/{id}")
    public Result update(@PathVariable String id,@RequestBody Category category) {
        Integer result = categoryMapper.update(category);
        return new Result(result);
    }

    @PostMapping("")
    public Result insert(@RequestBody Category category) {
        Integer result = categoryMapper.insert(category);
        return new Result(result);
    }
}