前言

本文将总结项目中用到的一些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 还得做如下设置:

  1. File->Setting->Build,…->Compiler 将右侧project automatically勾上
  1. Intellij IEDA 使用ctrl+shift+a 快捷键搜索Registry...

这样你修改代码,一小会就自动化重新部署。

【SpringBoot】 项目中运用的一些技巧,mybatis-plus 自动编译等(持续更新)的更多相关文章

  1. 后端分页神器,mybatis pagehelper 在SSM与springboot项目中的使用

    mybatis pagehelper想必大家都耳熟能详了,是java后端用于做分页查询时一款非常好用的分页插件,同时也被人们称为mybatis三剑客之一,下面 就给大家讲讲如何在SSM项目和sprin ...

  2. SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL

    1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...

  3. 自身使用的springboot项目中比较全的pom.xml

    在学习的时候常建新的项目,mark下商用的jar <dependency> <groupId>org.mybatis</groupId> <artifactI ...

  4. SpringBoot项目中遇到的BUG

    1.启动项目的时候报错 1.Error starting ApplicationContext. To display the auto-configuration report re-run you ...

  5. 在SpringBoot项目中添加logback的MDC

    在SpringBoot项目中添加logback的MDC     先看下MDC是什么 Mapped Diagnostic Context,用于打LOG时跟踪一个“会话“.一个”事务“.举例,有一个web ...

  6. springboot 项目中获取默认注入的序列化对象 ObjectMapper

    在 springboot 项目中使用 @SpringBootApplication 会自动标记 @EnableAutoConfiguration 在接口中经常需要使用时间类型,Date ,如果想要格式 ...

  7. springboot项目中js、css静态文件路径访问

    springboot静态文件访问的问题,相信大家也有遇到这个问题,如下图项目结构. 项目结构如上所示,静态页面引入js.css如下所示. 大家肯定都是这样写的,但是运行的话就是出不来效果,图片也不显示 ...

  8. 解决springboot项目中@Value注解参数值为null的问题

    1.错误场景: springboot项目中在.properties文件(.yml)文件中配置了属性值,在Bean中使用@Value注解引入该属性,Bean的构造器中使用该属性进行初始化,此时有可能会出 ...

  9. springboot项目中引用其他springboot项目jar

    1. 剔除要引入的springboot项目中不需要的文件:如Application和ApplicationTests等 2.打包 不能使用springboot项目自带的打包插件进行打包: 3.打包 4 ...

随机推荐

  1. js 正则整理

    //严格验证身份证格式方法function idCardNo(value){ //验证身份证号方法 var area = { 11: "北京", 12: "天津" ...

  2. Oracle创建表 创建库 数据恢复

    --建用户CREATE USER szs IDENTIFIED BY szs DEFAULT TABLESPACE NN_DATA01 TEMPORARY TABLESPACE temp;--用户赋权 ...

  3. Mybatis-学习笔记(1)SqlSessionFactory、SqlSession、Mybatis配置文件configuration的属性标签

    1.mybatis引入项目,只需要引入mybatis-x.x.x.jar包即可. (当然数据库驱动的引入必不可少) 2.SqlSessionFactory 由SqlSessionFactoryBuil ...

  4. MySQL-第十五篇使用连接池管理连接

    1.数据库连接池的解决方案是: 当应用程序启动时,系统主动建立足够的数据库连接,并将这些连接组成一个连接池.每次应用程序请求数据库连接时,无需重新打开连接,而是从连接池中取出已有的连接使用,使用完后不 ...

  5. [SPOJ]Count on a tree II(树上莫队)

    树上莫队模板题. 使用欧拉序将树上路径转化为普通区间. 之后莫队维护即可.不要忘记特判LCA #include<iostream> #include<cstdio> #incl ...

  6. adb logcat查看手机端日志

    前言 做app测试,遇到异常情况,查看日志是必不可少的,日志如何输出到手机sdcard和电脑的目录呢?这就需要用logcat输出日志了以下操作是基于windows平台的操作:adb logcat | ...

  7. .net 关于路径的总结

    原文:https://www.cnblogs.com/hehehehehe/p/6196155.html https://www.cnblogs.com/yugongmengjiutian/artic ...

  8. [Windows] GIF编辑器

    目录 1. 功能简介 2. 下载地址 3. 使用教程 3.1. 其他视频转gif的方案 1. 功能简介 可以自定义录屏位置.区域大小做GIF 可以编辑GIF.压缩GIF等 可以将视频转换成GIF 可以 ...

  9. 初学Java 数组统计字母

    public class CountLetterInArray { public static void main(String[] args) { char[] chars = createArra ...

  10. SQL 1 数据库 表的操作

    数据库:是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库.一句话就是存储数据的仓库 数据库的分类:网络数据库.层级数据库.关系结构数据库. 倘若按照数据库的存储介质来分:关系型数据库 ...