前言

本记录详细记录本人学习spring cloud继承mybatis plus方法,适用于初学者。

项目结构简单介绍

本系统目前新建两个dmeo服务,分别是demo-user和demo-order两个module,结构完全一样,配置文件个人喜欢使用yml文件,结构如下:

引入依赖

目前最新依赖为:

        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>

多个项目同时需要这个依赖,可以将依赖在父级的pom文件中进行配置,然后让所有子模块继承父级即可,操作如下:

在所有子模块中添加parent标签,以表示父级地址,本项目如下:

    <parent>
<groupId>priv.sinoam.cloud</groupId>
<artifactId>spring-cloud</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

在父级将module表示出来:

    <modules>
<module>demo-order</module>
<module>demo-user</module>
</modules>

配置完成后,子集项目可以共用父级所配置的依赖

配置application.yml配置文件

1.配置数据源

本项目使用MYSQL数据库,配置如下:

spring:
application:
name: demo-user
datasource:
url: jdbc:mysql://localhost:3306/springcloud-demo
username: root
password: *******
driver-class-name: com.mysql.cj.jdbc.Driver

最新驱动为com.mysql.cj.jdbc.Driver,使用以前的会报错误

2.配置mybatis-plus

mybatis-plus:
global-config:
db-config:
id-type: auto
field-strategy: not_empty
#驼峰下划线转换
column-underline: true
#逻辑删除配置
logic-delete-value: 0
logic-not-delete-value: 1
db-type: mysql
refresh: false
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
mapper-locations: /mapper/**/*Mapper.xml

配置完成后,数据库和实体类必须是下划线式、驼峰式进行对应,否则使用自带的sql执行方法会找不到表

如最后一行所配置,实际路径为src/main/resources/mapper/**/*Mapper.xml,在src/main/resources/mapper下面的所有结尾为Mapper.xml的文件,都会被扫描到,如此一来,可以在mapper中写复杂sql

使用

以SYS_USER表为例,表结构如下:

新建实体类:

 1 package priv.sinoam.demouser.demo.po;
2
3 import java.io.Serializable;
4
5 import lombok.Data;
6
7 /**
8 * sys_user
9 *
10 * @author
11 */
12 @Data
13 public class SysUser implements Serializable {
14 private String id;
15
16 /**
17 * 账号
18 */
19 private String account;
20
21 /**
22 * 姓名
23 */
24 private String name;
25
26 private static final long serialVersionUID = 1L;
27 }

新建Dao层接口:

1 package priv.sinoam.demouser.demo.mapper;
2
3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 import org.apache.ibatis.annotations.Mapper;
5 import priv.sinoam.demouser.demo.po.SysUser;
6
7 @Mapper
8 public interface SysUserDao extends BaseMapper<SysUser> {
9 }

继承BaseMapper,将实体类传进去,需要注解@Mapper

在service层中进行使用,首先将接口注入进去:

    @Autowired
private SysUserDao sysUserDao;

然后调用时会发现单表增删改查已经自动集成,直接调用即可

若要写复杂sql,则需要在xml中进行编写。

先在Dao层接口中声明方法queryTest:

@Mapper
public interface SysUserDao extends BaseMapper<SysUser> { String queryTest(); }

然后再在对应的xml中编写sql:

<?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="priv.sinoam.demouser.demo.mapper.SysUserDao">
<resultMap id="BaseResultMap" type="priv.sinoam.demouser.demo.po.SysUser">
<id column="ID" jdbcType="VARCHAR" property="id" />
<result column="ACCOUNT" jdbcType="VARCHAR" property="account" />
<result column="NAME" jdbcType="VARCHAR" property="name" />
</resultMap>
<sql id="Base_Column_List">
ID, ACCOUNT, `NAME`
</sql>
<select id="queryTest" resultType="java.lang.String">
select ID from SYS_USER WHERE ID = 1
</select> </mapper>

namespace为命名空间;只想对应的Dao接口,resultMap为结果集,指定返回结果为实体类,而且和字段一一对应,使用Base_Column_List作为返回值时,会自动转成实体类;最后可以看到select标签,id即Dao层接口的方法名,执行此方法后,将会执行这个sql。

结束

已经测试通过,主要环节在于配置。

学习spring cloud记录2-在项目中使用mybatis-plus的更多相关文章

  1. Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系。

    Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具:Spr ...

  2. SpringBoot项目中,Mybatis的使用

    项目中使用MyBatis的地方很少,可以说是基本不用,慕课网上面这个项目介绍给也就是一些比较简单的使用例子,我用JPA比较的多,MyBatis有两种使用方式 1.导入MyBatis的依赖 <de ...

  3. Spring学习(四)在Web项目中实例化IOC容器

    1.前言 前面我们讲到Spring在普通JAVA项目中的一些使用.本文将介绍在普通的Web项目中如何实例化Spring IOC容器.按照一般的思路.如果在Web中实例化Ioc容器.这不得获取Conte ...

  4. 深入学习spring cloud gateway 限流熔断

    前言 Spring Cloud Gateway 目前,Spring Cloud Gateway是仅次于Spring Cloud Netflix的第二个最受欢迎的Spring Cloud项目(就GitH ...

  5. Spring Cloud集成相关优质项目推荐

    Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud Bus 事件.消 ...

  6. 如果你也打算学习 Spring Cloud

    说到 Spring Cloud,那肯定要少不了提一下微服务框架,所谓的微服务框架就是把负责的功能拆分成比较小.功能比较单一的服务独立处理,例如单点登录服务.支付服务.订单服务等,当然如果订单功能比较复 ...

  7. Spring Cloud OAuth2.0 微服务中配置 Jwt Token 签名/验证

    关于 Jwt Token 的签名与安全性前面已经做了几篇介绍,在 IdentityServer4 中定义了 Jwt Token 与 Reference Token 两种验证方式(https://www ...

  8. 【spring cloud】spring cloud打包最外层项目报错:'packaging' with value 'jar' is invalid. Aggregator projects require 'pom' as packaging. @ line 9, column 13

    OK,spring cloud项目,最外层的父级项目在打包的时候,报错如下: "C:\Program Files\Java\jdk1.8.0_131\bin\java" -Dmav ...

  9. salesforce零基础学习(一百零三)项目中的零碎知识点小总结(五)

    本篇参考:Salesforce Admin篇(四) Security 之Two-Factor Authentication & Single Sign On https://developer ...

  10. salesforce零基础学习(七十二)项目中的零碎知识点小总结(一)

    项目终于告一段落,虽然比较苦逼,不过也学到了好多知识,总结一下,以后当作参考. 一.visualforce标签中使用html相关的属性使用 曾经看文档没有看得仔细,导致开发的时候走了一些弯路.还好得到 ...

随机推荐

  1. 为Avalonia应用添加图标

    前言 为了让自己开发的应用更加好看,开发者往往需要增加一些图标. 本文分享在开发Avalonia应用时如何为应用增加图标,希望可以帮助到正在学习使用Avalonia并有此需求的开发者. 实践 经过搜索 ...

  2. SearXNG私有化部署与Dify集成

    一.概述 SearXNG 是一个免费的互联网元搜索引擎,它聚合了来自各种搜索服务和数据库的结果,但摆脱了隐私追踪 -- 用户行为既不会被引擎跟踪也不会被分析. 功能特性 自托管,可以私有化部署 没有用 ...

  3. 比df更好用的命令!

    大家好,我是良许. 对于分析磁盘使用情况,有两个非常好用的命令:du 和 df .简单来说,这两个命令的作用是这样的: du 命令:它是英文单词 disk usage 的简写,主要用于查看文件与目录占 ...

  4. 0x02 数据结构

    目录 数据结构 链表与邻接表 单链表 双链表 栈与队列 单调栈与队列 KMP KMP算法 Trie字典树 并查集 朴素并查集 维护Size的并查集 维护到祖宗节点距离的并查集 堆 哈希表 拉链法 开放 ...

  5. Electron 开发:获取当前客户端 IP

    Electron 开发:获取当前客户端 IP 一.背景与需求 1. 项目背景 客户端会自启动一个服务,Web/后端服务通过 IP + port 请求以操作客户端接口 2. 初始方案与问题 2.1. 初 ...

  6. 🎀隧道代理ip使用

    简介 隧道代理(Tunnel Proxy)是一种特殊的代理服务,它的工作方式是在客户端与远程服务器之间建立一条"隧道".这种技术常被用来绕过网络限制或提高网络安全性. 主要功能 I ...

  7. SpringBoot3整合SpringSecurity6(一)快速入门

    大家好,我是晓凡. 写在前面 不知道小伙伴们在学SpringSecurity过程中有没有和我一样的经历和烦恼. ①看完一篇文章或者一个教程,感觉学会了.但是一到实际项目中就不知道怎么用: ②被Spri ...

  8. 如何在 Java 中进行内存泄漏分析?

    如何在 Java 中进行内存泄漏分析? 内存泄漏是指程序中无法访问的对象仍然被占用内存,导致内存无法回收,最终导致内存不足.程序崩溃等问题.Java 中的内存泄漏通常与垃圾回收机制的工作方式相关,虽然 ...

  9. 小程序组件使用全局样式app.wxss

    Component({ options: { addGlobalClass: true } })

  10. PHP获取一个月所有时间

    $j = date("t"); //获取当前月份天数$start_time = strtotime(date('Y-m-01')); //获取本月第一天时间戳$array = ar ...