【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 还得做如下设置:

 

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

 

 

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

 

 

 

 

posted on 2019-11-19 11:17  Charles-MQ  阅读(473)  评论(0编辑  收藏  举报

导航