【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...
![]()

这样你修改代码,一小会就自动化重新部署。
posted on 2019-11-19 11:17 Charles-MQ 阅读(496) 评论(0) 收藏 举报


浙公网安备 33010602011771号