【SpringBoot】 项目中运用的一些技巧,mybatis-plus 自动编译等(持续更新)
前言
本文将总结项目中用到的一些springboot 的技巧,持续更新。
Mybatis-Plus 的运用
使用原因: 主要是节省了Mapper层的编写,通过继承BaseMapper可以直接调用通用的sql
1. 修改pom.xml文件,加入mybatis-plus-boot-starter包,去掉mybatis-spring-boot-starter包。pom.xml如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency> <dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.7.1</version>
</dependency>
2. 修改UserDao.java 如下,代码我们继承BaseMapper并传入UserEntity,这样我们就是接口内没有任何的代码,但因为继承了BaseMapper接口,BaseMapper本身就有丰富的接口方法且已经按照常规的开发习惯实现完毕,所以就相当于我们有了常用的数据库CRUD操作(如果想知道有哪些默认的操作,可以查看BaseMapper的源码),所以我们顺带把mapper/UserMapper.xml 删除掉。
@Repository
public interface UserDao extends BaseMapper<UserEntity> {
}
3. 修改UserController.java,因为我们限制没有getUser()方法,所以我们修改成BaseMapper提供的一样效果的方法selectById()。修改后代码如下:
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserDao userDao; @RequestMapping("/getUser")
@ResponseBody
public UserEntity getUser(Long id) {
return userDao.selectById(id);
} }
4. 修改配置文件,指定映射文件存放的位置和要扫描的包名,去掉原来的mybatis的配置,最后如下
#mysql 相关配置
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root #mybatis-plus
mybatis-plus.mapper-locations=classpath:mapper/*.xml
mybatis-plus.type-aliases-package=com.XXXX.entity #这里填写你的实体层entity
5. 修改UserEntity.java。 因为默认会去找test1下的UserEntity表,而我们的表名是 users,所以在 修改UserEntity.java上添加@TableName("users") 来指定找个实体对应的表,代码如下
@TableName("users")
public class UserEntity {
private Long id;
private String userName;
private String password;
//.......get() set() .....
6. 运行程序,并通过:http://localhost:8080/user/getUser?id=1 测试,可以看到如下输入:
{
"id": 1,
"userName": "XXXX",
"password": "123456"
}
单元测试与自动编译
首先是单元测试,方式有很多,例如Junit, MVCmock,这里介绍的是spring自带的Spring boot test模块。
先引入pom:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
一个简单的测试demo:
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloWorldController_Test {
private MockMvc mockMvc; @Before
public void setUp() {
// 指定一组控制器
mockMvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
} @Test
public void getHello() throws Exception {
// 执行一个请求
mockMvc.perform(MockMvcRequestBuilders.get("/hello")
.accept(MediaType.APPLICATION_JSON))
// 验证返回状态码
.andExpect(status().isOk())
// 验证返回结果
.andExpect(content().string(equalTo("hello world")));
}
}
热启动
开发代码时,为了避免每次修改都得重新运行才能看到效果,spring boot可以通过简单的导入devtools包,并简单配置就可以实现实时生效。
pom.xml 加入如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency> <plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--不设置为true,则devtools 不会生效-->
<fork>true</fork>
<!--支持静态文件热部署-->
<addResources>true</addResources>
</configuration>
</plugin>
如果IDE选用IDEA 还得做如下设置:
- File->Setting->Build,…->Compiler 将右侧project automatically勾上

- Intellij IEDA 使用ctrl+shift+a 快捷键搜索Registry...


这样你修改代码,一小会就自动化重新部署。
【SpringBoot】 项目中运用的一些技巧,mybatis-plus 自动编译等(持续更新)的更多相关文章
- 后端分页神器,mybatis pagehelper 在SSM与springboot项目中的使用
mybatis pagehelper想必大家都耳熟能详了,是java后端用于做分页查询时一款非常好用的分页插件,同时也被人们称为mybatis三剑客之一,下面 就给大家讲讲如何在SSM项目和sprin ...
- SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL
1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...
- 自身使用的springboot项目中比较全的pom.xml
在学习的时候常建新的项目,mark下商用的jar <dependency> <groupId>org.mybatis</groupId> <artifactI ...
- SpringBoot项目中遇到的BUG
1.启动项目的时候报错 1.Error starting ApplicationContext. To display the auto-configuration report re-run you ...
- 在SpringBoot项目中添加logback的MDC
在SpringBoot项目中添加logback的MDC 先看下MDC是什么 Mapped Diagnostic Context,用于打LOG时跟踪一个“会话“.一个”事务“.举例,有一个web ...
- springboot 项目中获取默认注入的序列化对象 ObjectMapper
在 springboot 项目中使用 @SpringBootApplication 会自动标记 @EnableAutoConfiguration 在接口中经常需要使用时间类型,Date ,如果想要格式 ...
- springboot项目中js、css静态文件路径访问
springboot静态文件访问的问题,相信大家也有遇到这个问题,如下图项目结构. 项目结构如上所示,静态页面引入js.css如下所示. 大家肯定都是这样写的,但是运行的话就是出不来效果,图片也不显示 ...
- 解决springboot项目中@Value注解参数值为null的问题
1.错误场景: springboot项目中在.properties文件(.yml)文件中配置了属性值,在Bean中使用@Value注解引入该属性,Bean的构造器中使用该属性进行初始化,此时有可能会出 ...
- springboot项目中引用其他springboot项目jar
1. 剔除要引入的springboot项目中不需要的文件:如Application和ApplicationTests等 2.打包 不能使用springboot项目自带的打包插件进行打包: 3.打包 4 ...
随机推荐
- pandas入门(1)
import pandas as pd import numpy as np # 自动创建索引 obj = pd.Series([4, 7, -5, 2]) print(obj, type(obj)) ...
- Tomcat控制台
一般在安装完成Tomcat之后,我们需要验证tomcat是否安装成功,在浏览器的url中输入:http://127.0.0.1:8080/,就会进入如下的页面(表示安装成功): 在上面的左侧顶部,有一 ...
- linux串口编程--cssl库
cssl库使用方法概括: 1.cssl_t *ser; //定义一个串口结构体 2.cssl_start(); //使用cssl串口库 3.cssl_open(); //打开并配置串口,参数: 串口名 ...
- PyTorch笔记之 scatter() 函数
scatter() 和 scatter_() 的作用是一样的,只不过 scatter() 不会直接修改原来的 Tensor,而 scatter_() 会 PyTorch 中,一般函数加下划线代表直接在 ...
- String.indexOf()的使用方法
String.indexOf()的用途: 返回此字符串中第一个出现的指定的子字符串,如果没有找到则返回-1 源码如下: /** * Returns the index within this stri ...
- [luogu4768] [NOI2018] 归程 (Dijkstra+Kruskal重构树)
[luogu4768] [NOI2018] 归程 (Dijkstra+Kruskal重构树) 题面 题面较长,这里就不贴了 分析 看到不能经过有积水的边,即不能经过边权小于一定值的边,我们想到了kru ...
- Mysql共享锁、排他锁、悲观锁、乐观锁
一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--间隙锁( ...
- wxpython程序基本功能源码整理,包括基本文字,输入框,字体设置,按钮绑定事件触发
#coding=utf-8 import wx class MyApp(wx.App): def __init__(self): wx.App.__init__(self) def OnInit(se ...
- C# http post请求帮助类
using System; using System.Collections.Specialized; using System.IO; using System.Net; using System. ...
- org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [dx.service.ItemService] found for dependency
在整合ssm框架,测试service层的时候报错 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: ...