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

news2024/11/29 2:54:28

继续使用以简单的例子从头开始建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来访问结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2062263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python实用教程(二):安装配置Pycharm及使用(Win10)

上一篇&#xff1a;python实用教程&#xff08;一&#xff09;&#xff1a;安装配置anaconda&#xff08;Win10&#xff09;-CSDN博客 1、简介及下载 PyCharm是一款功能强大的 Python 编辑器&#xff0c;具有跨平台性。是Jetbrains家族中的一个明星产品。 下载地址&#xff…

Nacos漏洞检测总结

弱口令 默认账号密码 nacos/nacos POST /nacos/v1/auth/users/login HTTP/1.1 Host: xxxx:8848 Connection: keep-alive Content-Length: 29 Accept: application/json, text/plain, */* User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like…

高效分页策略:掌握 LIMIT 语句的正确使用方法与最佳实践

本文主要介绍limit 分页的弊端及线上应该怎么用 LIMIT M,N 平时经常见到使用 <limit m,n> 合适的 order by 来实现分页查询&#xff0c;这样做到底性能如何呢&#xff1f; 先来简单分析下&#xff0c;然后再实际验证一下。 无索引条件下&#xff0c;需要做大量的文件排…

代码随想录 刷题记录-13 回溯(2)组合问题

在这里涉及到的回溯中的抽象树&#xff0c;都是“选哪一个元素”的思想。 1.第77题. 组合 回溯法就用递归来解决嵌套层数的问题。 把组合问题抽象为如下树形结构&#xff1a; 可以看出这棵树&#xff0c;一开始集合是 1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c; …

探索Python交互式编程的新境界:Python-prompt-toolkit的魔法

文章目录 探索Python交互式编程的新境界&#xff1a;Python-prompt-toolkit的魔法背景&#xff1a;为何选择Python-prompt-toolkit&#xff1f;Python-prompt-toolkit是什么&#xff1f;如何安装Python-prompt-toolkit&#xff1f;简单使用&#xff1a;Python-prompt-toolkit的…

MongoDB Compass初体验

入坑Mongodb也好多年了&#xff0c;客户端一直都是使用的Robomongo&#xff0c;后改名为Robo 3T了&#xff0c;现在又改名为Studio 3T&#xff0c;还分了免费版和付费版。 最近换了新电脑&#xff0c;需要重新安装Mongodb的客户端&#xff0c;加上公司对安装软件的各种限制&…

国内首颗ASIL D级高端旗舰级R52+内核车规MCU发布,中国汽车芯片强势崛起

8月21日&#xff0c;在2024紫光同芯合作伙伴大会上&#xff0c;紫光同芯正式发布第二代THA6系列高端旗舰级新品THA6412。该芯片在安全性、可靠性、算力、实时性等方面全方位升级&#xff0c;是继今年7月紫光同芯发布THA6206芯片后&#xff0c;又一款通过ASIL D产品认证的旗舰级…

GDB的基本使用(1)

我有话说 因为时间和精力原因&#xff0c;本文写的虎头蛇尾了&#xff0c;除了启动调试与程序执行以外只有少量截图演示&#xff0c;只是简单的说明。如果有需要可以联系我&#xff0c;我有时间的话会把演示补上&#xff0c;谢谢理解。 启动调试与程序执行 启动调试并传递参数…

小白快速上手 SRC漏洞挖掘科普攻略!零基础入门到精通,收藏这一篇就够了

前言 随着网络安全的快速发展&#xff0c;黑客攻击的手段也越来越多样化&#xff0c;因此SRC漏洞挖掘作为一种新的网络安全技术&#xff0c;也在不断发展和完善。那么&#xff0c;作为一个网安小白如果想要入门SRC漏洞挖掘&#xff0c;需要掌握哪些知识呢&#xff1f;以下是本…

css属性 clip-path切割多边形polygon

如果我们要把一个矩形切割成如图所示&#xff0c;可以使用 clip-path来做切割 clip-path&#xff1a;polygon&#xff08;x1 y1&#xff0c;x2 y2&#xff09;里面的参数是切割后每个顶点的坐标&#xff0c;坐标的原点是div的左上角&#xff0c;每个顶点的坐标如下&#xff1a…

海山数据库(He3DB)源码详解:事务源码执行过程

海山数据库(He3DB)源码详解&#xff1a;事务源码执行过程 本文介绍了He3DB数据库在DDL和DML操作过程中&#xff0c;两种事务在底层源码执行流程细节。 操作过程 1、启动数据库并进入GDB 首先&#xff0c;在终端A启动一个测试用的数据库test&#xff0c;并查看当前测试用的t…

【Qt】输入类控件QLineEdit

目录 输入类控件QLineEdit 例子&#xff1a;录入个人信息 例子&#xff1a;使用正则表达式验证输入框的数据 例子&#xff1a;验证俩次输入密码一致 例子&#xff1a;切换显示代码 输入类控件QLineEdit QLineEdit 用来表示单行输入框&#xff0c;可以输入一段文本&#xf…

ubuntu18.04更改系统语言及换源的方法步骤

ubuntu的虚拟机不知道第几次被玩崩溃了&#xff0c;无奈只好重装&#xff0c;这里记录下更改语言和换源的操作步骤。 一、更改系统语言为简体中文 1&#xff0c;点击虚拟机右上角的开始按钮&#xff0c;选择设置。 2&#xff0c;在左侧选项中选择Region & Language,再选择…

day28-测试自动化之Requests库的发送请求、响应内容、Cookie和session

目录 一、发送请求 1.1.GET请求 1).作用 2).步骤 3).响应对象 4).代码 5).带参代码 1.2.POST请求 1).作用 2).应用 3).参数 4).代码&#xff08;地址已失效&#xff09; 5).扩展 1.3.PUT请求 1).作用 2).应用 3).参数 4).响应 5).代码&#xff08;地址已失效&#xff09; 1.4.D…

DC-2综合渗透,rbash逃逸,git提权,wordpress靶场渗透教程

前言 博客主页&#xff1a;【h0ck1r丶羽】的公众号~~ ​ 本文主要讲解了渗透测试中的完整渗透测试流程&#xff0c;主要介绍了【wpscan】、【cewl】、【rbash逃逸】的使用技巧&#xff0c;靶场为vulnhub的机器大家可以自行下载&#xff0c;如果文章哪有不对&#xff0c;还请师…

大模型在应用开发安全左移实践

1.应用开发安全左移势在必行 近年来&#xff0c;应用系统被入侵或敏感信息泄漏类的安全事件时有发生&#xff0c;大部分安全事件的根本原因是应用软件设计或实现中存在安全漏洞。由于软件安全性问题导致各种信息泄密、信息被篡改、网络服务中断的事件频发&#xff0c;给企业和…

如何基于 langchain与 LLM 构建自己的知识库系统

如何基于 langchain与 LLM 构建自己的知识库系统 前些时候字节上了自己的扣子&#xff0c;用来构建我们自己的 agent AI 实战&#xff1a;手把手教你使用「扣子/coze」来搭建个人blog知识库 - 掘金 (juejin.cn)[1] 受到启发&#xff0c;想在本地或者自己的服务器上面搭建一个知…

机器学习第五十二周周报 Distribution Shift of GNN

文章目录 week52 Distribution Shift of GNN摘要Abstract一、文献阅读1. 题目2. Abstract3. 预测标准3.1 问题提出3.2 图结构3.3 分布转移 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程 5. 结论 二、若依框架1. 框架概述2. 核心功能 3. 技术栈4. 框架特点优缺点小结参考…

写作小白2024年逆袭,AI写作工具top4的正确打开方式

以前&#xff0c;人们总觉得写文章、编故事是人特有的本事&#xff0c;机器肯定搞不定。但现在&#xff0c;AI越来越牛&#xff0c;这些AI写作工具&#xff0c;用上了深度学习、自然语言处理这些高科技&#xff0c;能模仿人的思路来写东西。它们不仅能帮人写&#xff0c;有时候…

AI大模型日报#0822:OpenAI推GPT-4o微调服务、混元大模型负责人专访

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE-4.0-8K-latest&#xff09;、“智谱AI”&#xff08;glm-4-0520&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅…