Spring boot
主要以Spring 全家桶相关的文章
众纳
知道的越多越知道太多不知道的,相反无知的人却以为无所不能!
展开
-
Spring boot 在 Docker环境下的路径映射通用解决方案
Java 程序一般运行在Linux 下如(UB、Docker)等,但是很多开发环境是在Windows下开发的(也有在Windows 下安装Docker ,早前我就是为了怕Ubuntu非桌面麻烦就干脆使用Win10 上安装一个Docker );这就会出现移植运行时的路径问题,否则会出错。cmd -> 使用命令把D盘的image文件目标 = /users/images/ 目录。以下是一个文本编辑器的上传功能示例。Windows Docker 运行。......原创 2022-08-30 10:05:37 · 1354 阅读 · 0 评论 -
Mybatis Plus 扩展mapper接口与mapper xml文件不同目录 解决方案
场景说明尽管我使用Mybatis Plus 带来很多方便,但是大多情况下我们需要在一定逻辑下实现对应的业务(失去逻辑的业务没有意义)。于是我的做法,使用代码生成器生成Mybatis Plus 基础方法,然后再定义一个逻辑目录如Biz;同时在此目录下再创建对应的service目录、service\impl 目录、mapper目录、mapper\xml目录。{ps:我没有创建controller目录是因为基础目录里已经有了,直接用就行了}问题说明 ...原创 2022-04-21 17:28:31 · 3760 阅读 · 0 评论 -
Mybatis Plus 精华教程
引言Mybatis Plus 是继承了Java的精髓:MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。(引用官方原话) 在这里我想说几句题外话:1.推荐跳过Mybatis ,直接学MybatisPlus2.要掌握最好熟练使用SQL3.本文尽提取常用的一些知识点,这个远远没有官方资料更详尽!所以遇到问题多去官网查文档(文档是中文的,不用担心)。筹备数据库:mysql8.0.27 表:...原创 2022-03-25 11:04:59 · 2070 阅读 · 0 评论 -
Spring Boot 获取IP
在实际项目中,我们通常是需要拿到客户的IP用于分析客户所在的区域;例如:我们开发的系统需要用户在固定的一个区域内登陆,否则认为此用户是风险登陆。特别注意:有些系统需要使用了代理,因此要考虑到代理因素。实现过程:1.建立一个工具类package com.flo.util;import javax.servlet.http.HttpServletRequest;import java.net.InetAddress;import java.net.UnknownHostExcept原创 2021-11-18 13:07:11 · 1810 阅读 · 2 评论 -
使用thymeleaf 给List 加个序号
在处理业务数据时,通常有表头(主表),表身(从表),当我们在前端需要显示表身时不能使用ID当做序号(很有可能排序不同而错乱),那么处理办法,1.通过Java后端实现 2.通过前端遍历时添加。如下图效果我个人倾向通过前端实现以减少对后端的耦合度,实现方法:<table style="width: 1024px"> <tr> <th width="4%">序号</th> <t.原创 2021-08-25 10:42:28 · 1069 阅读 · 0 评论 -
Spring Boot 手把手实现PDF功能
需求: 在开发的业务系统中我希望能有一个转出PDF功能。比如:转出订单,转出发货单等。原理:使用itext 与flying-pdf 对 thymeleaf 模板填充后生成PDF实现:1.准备中文字体,用于PDF中关于中文文字的显示。链接: https://pan.baidu.com/s/1ubf9eWYHgqNgvtk0w7mauw 提取码: qd1i存放位置2.Maven 主要依赖<!--itext 生成PDF--><depe..原创 2021-07-08 09:04:08 · 1912 阅读 · 8 评论 -
Java 调取第三方接口,取返回值(RestTemplate)
需求 有时我们会调用第三方接口,并取相关的返回数据。思路:通过Map 进行获取,如果有子层,再通过Map方式进行强转后读取(注意做一下异常处理)示例@Transactional public String SendStartFlow(Integer NoID,String userCode,String rem){ String processInstanceId=""; String code="203"; String url =mail原创 2021-06-23 17:30:45 · 3509 阅读 · 1 评论 -
实现SpringBoot 通过 thymeleaf 生成 PDF实例
声明:本文参考于 https://blog.csdn.net/HXNLYW/article/details/104478142本文仅用于补充,与工具类细节工具类(注意字体路径,如果没有字体到他的Gitee上面下载)import com.lowagie.text.pdf.BaseFont;import com.lowagie.text.xml.xmp.XmpWriter;import lombok.extern.slf4j.Slf4j;import org.thymeleaf.Templat转载 2021-06-16 11:31:05 · 1875 阅读 · 1 评论 -
Spring Boot 获取接口调用者的IP
需求:我们实现一个登陆功能时,可能会有需要记录登陆者IP的需求,用于系统安全分析或账户来源分析。(当然还有更多应用场景)工具类如下(来源于网络,已兼容K8S 代理的情况)import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.util.StringUtils;import javax.servlet.http.HttpServletRequest;import java.net.Ine原创 2021-06-11 08:33:36 · 3197 阅读 · 0 评论 -
Spring Boot 提供跨域访问的配置
如题代码import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource;import org.sp原创 2021-06-10 11:34:23 · 153 阅读 · 0 评论 -
thymeleaf 下拉选择框 处理 For LayUI
实体package com.yanzhen.po;import lombok.Data;@Datapublic class Dic { private Integer id; private String name; private String pName;}Daopackage com.yanzhen.dao;import com.yanzhen.po.Dic;import java.util.List;public interface DicDa原创 2021-05-31 11:31:54 · 605 阅读 · 1 评论 -
Spring boot 读取配置项 properties文件
需求项目有测试环境与正式环境,我们做了一个发邮件的功能;邮件内容分别显示的内容格式不同实现1.配置properties文件(我这里直接写在application.properties)#邮件配置#邮件发送地址mail.hicky=http://********:9020/PostMail/sendEmailmail.seturl=http://test.***.com/pluto/p/TaskDetail/#mail.hicky=http://*******:9020/PostMail/原创 2021-05-24 16:46:34 · 125 阅读 · 0 评论 -
mybatis sql注释是个坑能,能在外部注释不要在执行语句上注释
Mybatis时,在处理SQL语句时不建议把注释写在具体执行语句内,否则会拼接失败。我如下处理 <!-- 以下为注释 --><!-- 1.重新变更项目的计划完成时间 --><!-- 2.重新评估本任务的计划完成时间--><!-- 3.更新邮件的计划完成时间--><!-- 4.更新子阶段以后的计划完成时间与计划开始时间--> <update id="updateTaskPlan" pa原创 2021-05-12 15:04:24 · 539 阅读 · 0 评论 -
Mybatis 通过传入的List实现批量新增
需求其实在实现前后端交互的时候,我们不需要时时的调用接口;举例说明:购物车,可以通过前端选择 N个产品,然后一次提交。代码实现POpackage com.npi.po;import lombok.Data;import java.util.Date;@Datapublic class ProjectStage { private Integer id;//ID private Integer stage;//大阶段 private Integer proj原创 2021-05-07 17:20:28 · 497 阅读 · 2 评论 -
Spring Boot 如何提高代码的利用性
承如伟人言:实践是检验真理的唯一标准接口的复用性Java 接口 存在的意义在于多态,目的都是提高代码的重复利用性。需求做饭先先有一个模板1 备饭2 锅3 火4 盛饭那么做一个接口洗再做一个实现类来继承米 的 洗方法红薯 的 洗方法这就是多态当我们做饭的时候做米饭1 米=new 米 米.洗2 锅3 火4 盛饭做红薯饭1 红薯=new 红薯(); 红薯.洗2 锅3 火4 盛饭在现有的项目中,会有公用方法,最好把这些方法把它抽离;需求:1.原创 2021-04-22 10:27:26 · 98 阅读 · 0 评论 -
关于Spring boot 分层 整理
一般的项目模块中都有DAO、Entity、Service、Controller层。Entity层:实体层 数据库在项目中的类Entity层是实体层,也就是所谓的model,也称为pojo层,是数据库在项目中的类,该文件包含实体类的属性和对应属性的set、get方法;DAO层: 持久层 主要与数据库进行交互DAO层=mapper层,现在用Mybatis逆向工程生成的mapper层,其实就是dao层。DAO层会调用entity层,DAO中会定义实际使用到的方法,比如增删改查。DAO 层的数据源和数据库连转载 2021-04-21 18:01:15 · 579 阅读 · 0 评论 -
MyBatis 利用SQL 的UUID 实现多表关联的树结构
需求在VUE +Element 实现树结构时遇到一个问题,要求子节点有一个唯一标识 (据我所知LayUI 不存在这个问题)很显然不能用各外键的ID作为唯一标识(当时想了一个办法就是把各节点的ID * 几个不同的值,但仍然有可能重复,所以现在看很可笑);解决文案使用MySQL 的UUID() 方法实现SQL<sql id="TestSQL"> UUID() as UUID, s_type.id, s_type.name,原创 2021-04-16 16:08:42 · 335 阅读 · 0 评论 -
MyBatis 同一张表实现子级关系
需求实现如下: 热点类型 - mold_staus - CODE(0) NAME(报废) - CODE(1) NAME(维修) - CODE(2) NAME(开发) - CODE(3) NAME(试模) - CODE(4) NAME(生产) 变更类型 - npi_change_class - CODE(1) NAME(内部变更) - CODE(2) NAME(外部变更) . . .数据库表SQLselect id,原创 2021-04-15 13:48:03 · 282 阅读 · 0 评论 -
SpingBoot Mybatis 使用嵌套collection数据集
需求描述表结构模板表 模板子表(多个子模板) 模板子表子表(多个明细) 模板子表外链表具体业务 模板 模板子阶段 子阶段任务 子阶段任务库(另一张表)SQL关系 select s_type.id, s_type.name, s_type.type_code, s_type.type_name, npi_project_class.id as cid, npi_project_class.stage, npi_project_class_task.id原创 2021-04-14 18:27:03 · 153 阅读 · 0 评论 -
Spring Boot 上传文件大小上限解决方案
在做项目时,有一个视频上传的功能,但是上传视频时会报错,提示超出文件大小;解决方案就是:application.properties文件中增加#上传文件大小限制 兼容多个Spring boot 版本spring.http.multipart.maxFileSize=200Mbspring.http.multipart.maxRequestSize=200Mbspring.servlet.multipart.maxFileSize=200MBspring.servlet.multipart.ma原创 2020-10-14 17:22:50 · 371 阅读 · 0 评论 -
Java SpringBoot 图片上传无法马上显示,只能重启IDE后才生效解决方案
症状说明:当上传图片时不能马上显示,后台接收图片保存到本地,返回保存路径,发现页面的标签无法显示图片,F12显示无法加载图片,请求地址为ip:port/static/uploadFile(楼主将图片保存到了static下),显示404无此资源。将项目重新启动之后,图片可以正常加载。原因分析:当程序加载后自动会加载到内存中,对当前目录不做读取。解决方案就是设置虚拟目录做个配置类package com.flo.config;import org.springframework.context.a原创 2020-09-28 19:33:43 · 1749 阅读 · 4 评论 -
MyBatis一对多或多对多处理方式
一切从业务出发产品表:prdt房间表:room产品适用房间表:prdtroom需求:通过查产品能查到对应适用的房间位置测试SQLselect prdt.id as id, prdt.productName as productName, prdt.productImage as productImage, prdt.livetype as livetype, prdt.原创 2020-09-25 14:27:20 · 237 阅读 · 0 评论 -
Java 给Layui 界面的选择框赋值
需求是这样式的:添加时的下拉框自动下拉从数据库得到的结果。功能原理:在新增跳转时传入一个Model 然后渲染时进行For eah 拼接。Java Controller/** * * 添加账户跳转页 */ @RequestMapping("/addUser") public String addUser(Model model){ List<Company> list= companyService.findAll();//把原创 2020-09-22 09:50:33 · 765 阅读 · 0 评论 -
关于Mybatis处理数据字段:status 时的怪事分析
事件描述:数据库为Mysql表如下:Po层@Datapublic class SysUser { private Integer id;//主键1 private Integer type;//2 0 本公司 1 代理 2 经销 private Integer companyId;//3 公司ID 公司ID 0 代表本公司 private String companyName;//4 公司名称 private Integer role;//5 0管理原创 2020-09-22 09:06:41 · 1688 阅读 · 1 评论 -
layui富文本编辑器在Java项目中的应用
需求:在线反馈功能,为了更好描述问题,因此问题提交前有一个图文描述(能支持视频最好)。工具:后端:Java前端:LayUI插件:thymeleaf文本编辑器用:kz.layedit 富文本编辑器拓展HTML<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head> <meta charset="utf-8"> <title>l原创 2020-09-17 18:25:35 · 713 阅读 · 0 评论 -
LayUI Java 上传图片功能
众所周知,CS 程序之所以干不过BS程序最大的原因就是不能或者很难实现一个文本编辑并且前台显示,当然可以通过第三方插件实现,这样就会有程序文件大、占内存、加载慢等问题。(在这里不是说CS一无是处,比如CS在数据处理方面还是非常快的,安全性相对更高等等) 需求:我们做商品管理时,需要上传商品主图;将来我们需要把上传成功后的路径传存到数据库中,方便用到时调用并显示。 前端:LayUI 框架 插件:thymeleaf前端<!DOCTYPE html><...原创 2020-09-17 17:32:42 · 1077 阅读 · 1 评论 -
SpringBoot +LayUI+thymeleaf 实现一个功能(五) 删除
功能说明删除时应该删除子节点,有两个方式:1.通过一条SQL语句进行删除 2.执行两个删除语句。数据源增加 &allowMultiQueries=trueJAVA 后端daovoid deleteDeptById(int id);mapper<!--删除操作 根据id删除节点以及下面的子节点--> <delete id="deleteDeptById" parameterType="int"> delete from dep原创 2020-09-03 18:04:47 · 626 阅读 · 1 评论 -
SpringBoot +LayUI+thymeleaf 实现一个功能(四) 修改
Java 后端dao 层void updateDept(Dept dept);mapper<!--修改部门信息--> <update id="updateDept" parameterType="com.flo.po.Dept"> update dept set name=#{name},sort=#{sort},status=#{status} where id=#{id} </update>Service接口void原创 2020-09-03 17:51:07 · 448 阅读 · 0 评论 -
SpringBoot +LayUI+thymeleaf 实现一个功能(三) 新增
前端dept.html后端dao层package com.flo.dao;import com.flo.po.Dept;import org.springframework.stereotype.Component;import java.util.List;@Component("deptDao")public interface IDeptDao { /** * 查询部门信息 */ List<Dept> findAll();原创 2020-09-03 17:31:11 · 525 阅读 · 0 评论 -
SpringBoot +LayUI+thymeleaf 实现一个功能(二) 查询
Java 功能实现po 实体层package com.flo.po;import lombok.Data;import java.io.Serializable;import java.util.Date;@Datapublic class Dept implements Serializable { private Integer id; private Integer parentId; private Integer type; private St原创 2020-09-03 16:41:59 · 844 阅读 · 0 评论 -
SpringBoot +LayUI+thymeleaf 实现一个功能(一) 准备工作
前言经过一段时间的积累,我们需要通过一个项目验证一下我们的技术,那么通过一个前后端实现项目是最好不不过了。在网上看过一个视频教程,就一步步做下去,期间走过了很多弯路(不是别人的有错误,而是开发版本的问题),所以实践才是真理。创建数据库数据库类型:Mysql数据库名称:sridb表名:dept表结构:字段类型长度注释idbigint20主键parent_idbigint20上级部门ID。一级部门为0namevarchar50部门名称ty原创 2020-09-03 15:11:01 · 814 阅读 · 0 评论 -
mybatis 手把手配置多个数据源 (续)
前文已演示如何实现多数据源,如果我们仅可以调用出数据仍是不够的,我们需要把调用的数据利用起来。比如:我需要在项目主库中增加一条数据,在增加时为了要检索它的合法性,需要从源库中查询数据的合法情况,此时需要在Dao 层中进行调用,由于我们分配了多数据源,因此我们在接口中直接使用数据源注解就可以了。实例我需要记录一个项目的工作情况,但是管理项目的系统不支持这个功能,于是就要把项目登记进来(不能选择同步,因为业务需求不是所有项目都要登记,至少为什么这样的需求,在这里不多说)。思路:新增项目 1.判断项目在原创 2020-08-20 09:33:08 · 103 阅读 · 0 评论 -
mybatis 手把手配置多个数据源(多个数据库连接)
需求:项目中特别是做一个项目的外挂时,我们不希望直接在原库中修改,而是从一个库(业务库)读取,然后存入另一个库中(本地库)。这种需求非常常见;那么如何解决这个问题呢!首先用原来的数据源配置文件指定是不行的(因为数据源配置机制决定);准备工作,配置一个Spring boot +mybatis出来。项目结构如下:其中confing/dds/用来实现AOP切面基础类1.数据库准备2.数据源配置:application.yml#运行端口server: port: 8080#数据库配置sp原创 2020-08-18 16:43:21 · 10160 阅读 · 5 评论 -
Mybatis 输入SQL语句方法,方便调试
我们在实际开发过程中需要知道我们的SQL语句情况,因此需要在调试过程中把SQL输出到控制台;方法很多;我采用的方法,在配置文件中增加如下:server: port: 8080spring: datasource: driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/testdb?useUnicode=true&zeroDateTimeBehavior=conver原创 2020-08-18 14:40:22 · 480 阅读 · 0 评论 -
简述 mybatis 事务的使用
在实际应用中,我们需要做一系列的操作,比如当我们增加明细数据需要对表头更新合计值;也就是涉及多个表的操作时需要通过事务进行处理;那么事务处理方式有两种方式:一种写带事务的存储过程,另一种通过Spring 自身事务支持;在这里我就解释后者有方式;第一步:在入口处增加 @EnableTransactionManagement 注解package com.cm.aps;import org.springframework.boot.SpringApplication;import org.sprin原创 2020-08-15 16:59:26 · 1942 阅读 · 0 评论 -
Spring mybatis 处理业务逻辑
在实际项目中我们不仅是为了写入数据而写入数据,中间有一定的逻辑,比如,我们新增一个工艺,关于工艺代号作为唯一不能重复,我们需要对业务进行逻辑判断;那么关于逻辑应该写在Service去实现。Daopublic interface S_apscodeMapper { //根据制程代号查询制程 S_apscode findbycode(String code); //查询全部 List<S_apscode> findAll(); //新增 int i原创 2020-08-15 16:15:55 · 377 阅读 · 0 评论 -
Swagger2 接口多级分组方法
swagger 无疑是Java开发的最佳伴侣,接口非常方便调试;当然也有用Postman,因人而异吧。但是我们在配置Swagger的时候会有一个都默认一级分类也就是那个Defaul,在这个组里所有的接口二级分类都在这里,一般小项目还可以使用,但是做大项目的时候就接个接口就不那么方便了。在这里人放一下我的Swagger 配置代码@Bean public Docket buildDocket() { return new Docket(DocumentationType.SWA原创 2020-08-14 18:39:05 · 16647 阅读 · 4 评论 -
Spring Boot mybatis 同一个方法中执行多SQL语句
一切从需求出发;比如我有一个表存储 大类信息,一个表存明细信息。因此大类与明细的关系是一对多的关系,因此我希望在删除大类信息时自动清除子类信息。(也就是表头表身处理)仅通过在XML文件中增加处理(语句间通过" ; "号分隔)是不行的如下图;<delete id="deletebycode" parameterType="java.lang.String"> delete from s_apscode where k_code = #{code,jdbcType=VARCHA原创 2020-08-05 09:19:17 · 1229 阅读 · 0 评论 -
4-3、细说IDEA Spring MyBatis 之 再升级,实现分页查询
1.准备好底层实现1-1、页面返回结果类 PageResultpackage com.cm.aps.page;import java.util.List;public class PageResult { /** * 当前页码 */ private int pageNum; /** * 每页数量 */ private int pageSize; /** * 记录总数 */ private原创 2020-06-23 17:36:55 · 243 阅读 · 0 评论 -
4-2、细说IDEA Spring MyBatis 之 实体类、服务接口、服务类、映射接口、外部接访实现类、映射文件
书接前文,1.实体类用于与数据库一一对应的声明,并且是一个标准的JavaBean。类如下:package com.cm.aps.model;public class S_apscode { public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } private Integer id; private原创 2020-06-23 17:24:01 · 776 阅读 · 0 评论