当前位置: 首页 > 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;}
}

即可改写日期格式

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 运维-1.日志
  • 保姆级-C#与Halcon的窗体界面展示阈值分割图像教程(机器视觉保姆级教程)
  • 献给正在挣扎中的技术人!
  • Linux设置内网时间同步
  • C语言offsetof宏
  • Sublime Text 配置 Terminal (CMD)
  • 查看和访问信号记录数据
  • 【C语言】循环
  • 安装webman/admin记录
  • 采用ELK搭建日志平台,安装elasticsearch-head
  • Vue学习--- vue3 集成遇到的部分问题与解决
  • 小白之 FastGPT Windows 本地化部署
  • 案例:LVS-DR模式
  • 大模型备案全网最详细流程解读(附附件+重点解读)
  • 使用 Python 和 PyQt5 构建多线程图片下载器
  • 11111111
  • axios 和 cookie 的那些事
  • HTML中设置input等文本框为不可操作
  • IOS评论框不贴底(ios12新bug)
  • Java|序列化异常StreamCorruptedException的解决方法
  • Javascript设计模式学习之Observer(观察者)模式
  • Netty 4.1 源代码学习:线程模型
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • oschina
  • Python利用正则抓取网页内容保存到本地
  • QQ浏览器x5内核的兼容性问题
  • SwizzleMethod 黑魔法
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 浅谈Golang中select的用法
  • 驱动程序原理
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 深度学习入门:10门免费线上课程推荐
  • 十年未变!安全,谁之责?(下)
  • 使用common-codec进行md5加密
  • 首页查询功能的一次实现过程
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 在Docker Swarm上部署Apache Storm:第1部分
  • ​补​充​经​纬​恒​润​一​面​
  • ​决定德拉瓦州地区版图的关键历史事件
  • # windows 安装 mysql 显示 no packages found 解决方法
  • #QT(一种朴素的计算器实现方法)
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (七)Knockout 创建自定义绑定
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (源码分析)springsecurity认证授权
  • (杂交版)植物大战僵尸
  • .net core 控制台应用程序读取配置文件app.config
  • .Net 路由处理厉害了
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .Net多线程Threading相关详解
  • /bin/rm: 参数列表过长"的解决办法
  • @JsonFormat 和 @DateTimeFormat 的区别