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

继续使用以简单的例子从头开始建spring boot web多模块项目(一)中的项目进行mybatis集成。

1、pom.xml文件中,增加相关的依赖包的引入,分别是mybatis-spring-boot-starter、lombok、mysql-connector-java

如下:

xml 复制代码
<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

xml 复制代码
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等相关文件,也可以进行手工添加。

表结构如下:

创建脚本:

sql 复制代码
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 类

java 复制代码
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

java 复制代码
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

java 复制代码
<?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

java 复制代码
package org.rainpet.service;

import org.rainpet.entity.Warehouse;

import java.util.List;

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

服务实现类WarehouseServiceImpl

java 复制代码
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

java 复制代码
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文件

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来访问结果

6、控制器中,新增一个方法,name2,如下:

java 复制代码
@GetMapping("name2")
    @ResponseBody
    public List<Warehouse> name2(){
        List<Warehouse> warehouseList= warehouseService.getList();
        return warehouseList;
    }

springboot默认集成了Jackson,访问 http://localhost:8081/demo/name2,即可以直接拿到json。

7、在org.rainpet包下新建一个类:WebMvcConfig

内容如下:

java 复制代码
package org.rainpet;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.text.SimpleDateFormat;

@Configuration
public class WebMvcConfig {
    @Bean
    ObjectMapper objectMapper() {
        ObjectMapper om = new ObjectMapper();
        om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
        return om;
    }
}

即可改写日期格式

如下:

相关推荐
李长渊哦6 小时前
使用Druid连接池优化Spring Boot应用中的数据库连接
数据库·spring boot·后端
web135085886356 小时前
【Spring Boot】Spring AOP动态代理,以及静态代理
spring boot·后端·spring
尚学教辅学习资料8 小时前
基于SpringBoot的图书借阅小程序+LW参考示例
spring boot·后端·小程序·java毕设·图书借阅
一 乐8 小时前
高校体育场管理系统系统|体育场管理系统小程序设计与实现(源码+数据库+文档)
前端·javascript·数据库·spring boot·高校体育馆系统
山海不说话8 小时前
从零搭建微服务项目Base(第5章——SpringBoot项目LogBack日志配置+Feign使用)
spring boot·后端·spring·spring cloud·微服务·logback
不良人天码星9 小时前
Redis的简单使用
java·spring boot·redis·mybatis
初尘屿风9 小时前
小程序类毕业设计选题题目推荐 (29)
spring boot·后端·学习·微信·小程序·课程设计
qq_12498707539 小时前
Java+SpringBoot+数据可视化的家庭记账小程序(程序+论文+安装+调试+售后等)
java·spring boot·小程序·毕业设计
WCL-JAVA9 小时前
docker安装kafka,并通过springboot快速集成kafka
spring boot·docker·kafka
我认不到你10 小时前
AI改文(小说推文Java版)
java·开发语言·人工智能·spring boot·ai·ai作画·ai编程