tkmybatis 是对底层 sql 进行了抽象封装,不需要考虑 sql 怎么写,只需要按照逻辑思维,遵循 tkmybatis 的语法即可实现数据库操作。 本文适合对springboot项目结构有一定了解的读者。 本文的项目基础是一个demo项目(多模块的)。 1. 配置 1、添加 tkmybatis 的依赖
1 2 3 4 5 |
<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency> |
2、创建 dao 层的 mapper 接口,每个接口都要继承 tk.mybatis.mapper.common.Mapper 接口。此接口的形式为 Mapper<T>,带了个泛型,此泛型一般指的是对应的 pojo 或者 domain。比如:
1 2 |
public interface HouseMapper extends Mapper<House> { } |
3、在 Application 启动类上添加 mapper 扫描注解,表示要扫描到 dao 层的 mapper 接口。 比如本项目的mapper接口就统一放在 com.dgh.dao 下面,用 @MapperScan(basePackages = "包名") 来指定。 附注:在项目启动时,springboot 会自动扫描 Application 启动类所在的当前目录以及下一级目录,一般 Application 启动类都放在根目录,所以在单一项目下,只要是在 Java 类上添加了注解,都能够默认被 springboot 扫描到,并被添加到 springboot 的容器中,一般不需要特别用 @ComponentScan 去指定 springboot 要扫描哪些目录。 本文之所以特地用 @ComponentScan 去指定了 service 层和 controller 层的目录,是因为本文的项目是一个多模块项目,service 层和 controller 层各自都是一个独立的模块,与 Application 启动类不在同一目录下。
1 2 3 4 5 6 7 8 9 |
@SpringBootApplication @MapperScan(basePackages = "com.dgh.dao") @ComponentScan(basePackages = "com.dgh.service") @ComponentScan(basePackages = "com.dgh.controller") public class ControllerApplication { public static void main(String[] args) { SpringApplication.run(ControllerApplication.class, args); } } |
4、tkmybatis 具体的使用是在 service 层,service 层又分为接口和接口实现类,具体就在接口实现类里面。 5、其它的代码、配置与普通的springboot项目一样。 2. tkmybatis的结构 下图是 tkmybatis 的结构图,圈中的是 Mapper 接口,是最底层的,也就意味着它继承了所有的功能。因此才有了 […]
View Details一、用 plusDays() 方法将 Java 中的日期增加一天
二、用 Calendar 方法将 Java 中的日期增加一天
三、用 Milliseconds 方法将 Java 中的日期增加一天
四、用 Instant 类向 Java 日期添加一天
NOW()函数:返回当前日期和时间。
DATE_SUB(date, INTERVAL expr unit)函数:从给定的日期或时间中减去指定的时间间隔。
DATE_ADD(date, INTERVAL expr unit)函数:在给定的日期或时间上添加指定的时间间隔。
DATE_FORMAT(date, format)函数:将日期或时间格式化为指定的字符串格式。
解析JSON, 并将其转换为对应的数据结构。
例如,简单对象,或者复杂的泛型对象
JSON.parseObject(JSON.toJSONString(param), new TypeReference
本文主要介绍博主在以往开发过程中,对于不同业务所对应的 sql 写法进行归纳总结而来。进而分享给大家。
本文所讲述 sql 语法都是基于 MySql 8.0
博主github地址:github.com/wayn111 欢迎大家关注,点个star
Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。
View Details客户线上问题,应该如何复现,让客户再点一下吗?
异常被吃掉,手足无措,看是哪个家伙写的,竟然是自己!
排查别人线上的 bug,不仅代码还没看懂,还没一行日志,捏了一把汗!
预发 debug,稍微时间长点,群里就怨声载道!
加日志重新部署,半个小时就没了,问题还没有找到,头顶的灯却早已照亮了整层楼……
线上机器不能 debug,也不能开 debug 端口,重新部署会不会破坏现场呢?
怀疑入参有问题,怀疑合并代码有问题,怀疑没有部署成功,全是问号……
一个问题排查一天,被 Diss 排查问题慢……
微服务架构以将复杂的应用程序分解为易管理的服务而闻名,然而,管理微服务是一项具有挑战性的任务。为了确保开发工作流程的高效性,需要采用特定的工具。
在本文中,小编将为您介绍2023年最热的11款后端微服务开发工具,并全面介绍它们的基本功能和常见用例。不论您是经验丰富的微服务开发人员,还是初涉微服务领域的新手,本文都将为您提供宝贵的见解和剖析。
View DetailsIdea插件总结 自动生成文档注释 集成插件:Easy Javadoc 一个自动帮你完成JavaDoc注释的IDEA插件! 下载地址: 传送 使用说明: Windows: 鼠标放在方法上面,然后在按 Ctrl + **MAC:**鼠标放在方法上面,然后在按 command + \ 可以对文档注释中的作者名、日期格式等进行相关设置,还可以设置翻译渠道(如百度翻译、有道翻译等) 注释快捷展示 集成插件:Show Comment 在对项目不太熟悉的情况下,对于快速了解项目,梳理业务逻辑,此插件还是比较实用的,提升工程熟悉进度! 下载地址: 传送 配置: 彩色括号 集成插件:Rainbow Brackets Lite 彩虹括号,代码中存在多个括号,分不清范围,使用此插件可以一眼能看出来! 下载地址: 传送 区域代码高亮功能: Mac快捷键: cmd + 鼠标右键; **Windows快捷键:**Ctrl + 鼠标右键 彩色控制台 集成插件:Grep Console 可以通过expression表达式过滤日志、给不同级别的日志或者给不同pattern的日志加 下载地址: 传送 代码收藏夹 集成插件:iCode 它是一个代码片段收藏夹工具,页面十分简洁优雅,抛弃了传统的文件夹收藏的方式,通过标签做分类,支持标签和内容搜索。 时序图生成 集成插件:Sequence Diagram 软件背景图片由于需要绝对地址,每个人的电脑路径不一,所以请自行配置,菜单View找到最下面的set background img,选中背景图即可! 可以为输出的日志修改颜色,具体配置请在设置中Other Settings中找到GrepConsole即可! 下载地址: 传送 点击小扳手的图标,主要配置如下: call depth,用于配置调用深度,默认是5层; display only project classes ,勾选中表示仅展示本工程内的源码调用关系,不包含依赖包里的; skip getters/setters,勾选中表示时序图中会跳过get方法和set方法的调用关系; skip private methods,勾选中表示时序图中会跳过私有方法之间的调用关系; skip constructors,勾选中表示时序图中会跳过构造方法的调用关系; 阿里云智能编码插件 插件说明:智能编码,代码补全,代码搜索,代码示例搜索,代码文档搜索,代码生成 官网: 传送 Cloud Toolkit 插件说明:帮助开发者更高效地部署、测试、开发和诊断应用 官网: 传送 sh脚本(第一版): bash 复制代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<span class="code-block-extension-codeLine" data-line-num="1"><span class="hljs-meta">#!/bin/bash -e</span></span> <span class="code-block-extension-codeLine" data-line-num="2"><span class="hljs-comment">#Author:小飞</span></span> <span class="code-block-extension-codeLine" data-line-num="3"><span class="hljs-comment">#Version:V1.0</span></span> <span class="code-block-extension-codeLine" data-line-num="4"><span class="hljs-comment">#Function:Cloud Toolkit部署Jar脚本</span></span> <span class="code-block-extension-codeLine" data-line-num="6"><span class="hljs-comment"># 日志名称</span></span> <span class="code-block-extension-codeLine" data-line-num="7"><span class="hljs-built_in">source</span> /etc/profile</span> <span class="code-block-extension-codeLine" data-line-num="8">jarName=demo.jar</span> <span class="code-block-extension-codeLine" data-line-num="10">PID=`ps -ef|grep <span class="hljs-variable">$jarName</span> |grep -v grep|awk <span class="hljs-string">'{print $2}'</span> `</span> <span class="code-block-extension-codeLine" data-line-num="11"><span class="hljs-keyword">if</span> [ -n <span class="hljs-string">"<span class="hljs-variable">$PID</span>"</span> ]; <span class="hljs-keyword">then</span></span> <span class="code-block-extension-codeLine" data-line-num="12"> <span class="hljs-built_in">kill</span> -9 <span class="hljs-variable">$PID</span></span> <span class="code-block-extension-codeLine" data-line-num="13"> <span class="hljs-built_in">echo</span> <span class="hljs-string">"结束<span class="hljs-variable">$PID</span>进程"</span></span> <span class="code-block-extension-codeLine" data-line-num="14"><span class="hljs-keyword">fi</span></span> <span class="code-block-extension-codeLine" data-line-num="15"><span class="hljs-built_in">nohup</span> java -jar /www/wwwroot/java/<span class="hljs-variable">$jarName</span> > demo.out 2>&1 &</span> <span class="code-block-extension-codeLine" data-line-num="16"><span class="hljs-built_in">echo</span> <span class="hljs-string">"部署完毕!!!"</span></span> |
sh脚本(第二版): 第二版主要针对SpringBoot瘦身版使用 […]
View Details