zoukankan      html  css  js  c++  java
  • 【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...

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

  • 相关阅读:
    java集合之HashMap源码解析
    springboot下多线程开发注意事项
    java集合之List源码解析
    关于Layer web弹层组件的加载(loading)层位置居中问题
    微信公众号支付提示mch_id参数格式错误
    ASP.NET MVC 中使用Highcharts+Ajax+Json生成动态曲线图,柱状图,饼图
    C#常见金额优选类型及其三种常用的取整方式
    Mui Webview下来刷新上拉加载实现
    Select下拉框使用ajax异步绑定数据
    .NET、C#基础知识
  • 原文地址:https://www.cnblogs.com/Ronaldo-HD/p/11888092.html
Copyright © 2011-2022 走看看