Bootstrap

以简单的例子从头开始建spring boot web多模块项目(二)-mybatis简单集成

继续使用以简单的例子从头开始建spring boot web多模块项目(一)中的项目进行mybatis集成。
1、pom.xml文件中,增加相关的依赖包的引入,分别是mybatis-spring-boot-starter、lombok、mysql-connector-java
如下:

<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>

2、修改application.properties

server.port= 8081
spring.datasource.url = jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
spring.datasource.username = root
spring.datasource.password = 
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
mybatis.mapper-locations = classpath:mapper/*.xml

3、安装插件better-mybatis-generator之类的可以帮助生成mapper、entity、*mapper.xml等相关文件,也可以进行手工添加。
表结构如下:
在这里插入图片描述
创建脚本:

CREATE TABLE `warehouse` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `fid` varchar(25)  NOT NULL,
  `fname` varchar(45) NOT NULL DEFAULT '',
  `fused` tinyint NOT NULL DEFAULT '0',
  `fclass` tinyint NOT NULL DEFAULT '0',
  `is_group` tinyint NOT NULL DEFAULT '0',
  `is_negative` tinyint unsigned NOT NULL DEFAULT '0',
  `in_process` varchar(1000) DEFAULT '' COMMENT '在产产品',
  `fitemid` int unsigned DEFAULT '0',
  `FSyncModifyTime` bigint DEFAULT '0' COMMENT '同步数据修改标记',
  `forbidden` tinyint DEFAULT '0' COMMENT '是否禁用',
  `FModifyTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1;

新增相应的包及xml的目录entity、mapper、service、service\impl
在这里插入图片描述
实体Warehouse 类

package org.rainpet.entity;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
public class Warehouse implements Serializable {
    private Integer id;

    private String fid;

    private String fname;

    private Byte fused;

    private Byte fclass;

    private Byte isGroup;

    private Byte isNegative;

    /**
     * 在产产品
     */
    private String inProcess;

    private Integer fitemid;

    /**
     * 同步数据修改标记
     */
    private Long fsyncmodifytime;

    /**
     * 是否禁用
     */
    private Byte forbidden;

    /**
     * 修改时间
     */
    private Date fmodifytime;

}

mapper文件WarehouseMapper

package org.rainpet.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.rainpet.entity.Warehouse;

import java.util.List;

@Mapper
public interface WarehouseMapper {
    List<Warehouse> getList();
}

Mapper文件WarehouseMapper.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="org.rainpet.mapper.WarehouseMapper">
    <resultMap id="BaseResultMap" type="org.rainpet.entity.Warehouse">
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="fid" jdbcType="VARCHAR" property="fid" />
        <result column="fname" jdbcType="VARCHAR" property="fname" />
        <result column="fused" jdbcType="TINYINT" property="fused" />
        <result column="fclass" jdbcType="TINYINT" property="fclass" />
        <result column="is_group" jdbcType="TINYINT" property="isGroup" />
        <result column="is_negative" jdbcType="TINYINT" property="isNegative" />
        <result column="in_process" jdbcType="VARCHAR" property="inProcess" />
        <result column="fitemid" jdbcType="INTEGER" property="fitemid" />
        <result column="FSyncModifyTime" jdbcType="BIGINT" property="fsyncmodifytime" />
        <result column="forbidden" jdbcType="TINYINT" property="forbidden" />
        <result column="FModifyTime" jdbcType="TIMESTAMP" property="fmodifytime" />
    </resultMap>
    <select id="getList" resultMap="BaseResultMap">
        select * from warehouse
    </select>
</mapper>

服务WarehouseService

package org.rainpet.service;

import org.rainpet.entity.Warehouse;

import java.util.List;

public interface WarehouseService {
    List<Warehouse> getList();
}

服务实现类WarehouseServiceImpl

package org.rainpet.service.impl;

import org.rainpet.entity.Warehouse;
import org.rainpet.mapper.WarehouseMapper;
import org.rainpet.service.WarehouseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class WarehouseServiceImpl implements WarehouseService {
    @Autowired
    WarehouseMapper warehouseMapper;
    public List<Warehouse> getList() {
        return warehouseMapper.getList();
    }
}

控制器类DemoController

package org.rainpet.controller;

import org.rainpet.entity.Warehouse;
import org.rainpet.service.WarehouseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Controller
@RestController
@RequestMapping("/demo")
public class DemoController {

    @Autowired
    WarehouseService warehouseService;
    @ResponseBody
    @GetMapping("")
    public String index(){
        return "hello!";
    }

    @ResponseBody
    @GetMapping("name")
    public String name(@RequestParam(name="name",required = false,defaultValue = "张三")String name){
        List<Warehouse> warehouseList= warehouseService.getList();
        return warehouseList.toString();
        // return "hello "+name;
    }
}

4、Main.java文件

package org.rainpet;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "org.rainpet.mapper")
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(org.rainpet.Main.class,args);
        System.out.println("Hello world!");
    }
}

5、最终通过http://localhost:8081/demo/name?name=zhangsa来访问结果
在这里插入图片描述

;