当前位置: 首页 > news >正文

以简单的例子从头开始建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 {@AutowiredWarehouseMapper 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 {@AutowiredWarehouseService 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来访问结果
在这里插入图片描述
6、控制器中,新增一个方法,name2,如下:

@GetMapping("name2")@ResponseBodypublic List<Warehouse> name2(){List<Warehouse> warehouseList= warehouseService.getList();return warehouseList;}

springboot默认集成了Jackson,访问 http://localhost:8081/demo/name2,即可以直接拿到json。
在这里插入图片描述
7、在org.rainpet包下新建一个类:WebMvcConfig
内容如下:

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 {@BeanObjectMapper objectMapper() {ObjectMapper om = new ObjectMapper();om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));return om;}
}

即可改写日期格式

如下:
在这里插入图片描述


http://www.mrgr.cn/news/10381.html

相关文章:

  • 010、架构_配置文件_管理节点(clustermanager.ini)
  • Nginx源码安装与进阶负载均衡
  • RK3588开发笔记-pdm接口ES7201音频采集调试记录
  • pygame—炸弹牌(可做课设)
  • 在Ubuntu 18.04上安装Linux、Nginx、MySQL、PHP(LEMP堆栈)的方法
  • Android笔试面试题AI答之Kotlin(20)
  • 【C#】【EXCEL】Bumblebee/Classes/ExData.cs
  • 【Eureka】Eureka 介绍与实战
  • 集合及数据结构第八节(下)———— 队列(Queue)、队列的模拟实现和练习
  • npm install` 报错
  • kafka发送消息-生产者发送消息的分区策略(消息发送到哪个分区中?是什么策略)
  • Linux的NFS共享存储服务(配置案例)
  • 程序运行期发生程序运行期发生ClassNotFoundException
  • [FSCTF 2023]ez_php2
  • 没有人会窃取你的想法,关键在于执行
  • 力扣230题详解:二叉搜索树中第K小的元素的多种解法与模拟面试问答
  • 如何解决git@github.com: Permission denied (publickey)异常
  • MinerU 是一款将PDF转化如markdown、json工具
  • 如何使用Python自动化测试工具Selenium进行网页自动化?
  • <数据集>车内视角行人识别数据集<目标检测>