zoukankan      html  css  js  c++  java
  • springboot整合Mybatis-plus

    1.说明

    Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述(https://mybatis.plus/guide/),MP只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。并且只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间。代码生成、分页、性能分析等功能一应俱全,最新已经更新到了3.1.1版本了,3.X系列支持lambda语法,让我在写条件构造的时候少了很多的"魔法值",从代码结构上更简洁了。下面开始动手创建自己的项目把!!

    2.创建springboot项目

    按下图步骤,创建一个springboot项目。我是创建了一个父子工程,创建了普通的maven项目,在项目下创建不同的springboot项目,也可以直接创建spring boot项目。

    2.1创建项目

    2.2选择Spring Initializr(springboot项目)

     

    2.3配置属性,完成点击next

     

     2.4选择依赖,也可以不选择,稍后在pom文件里添加

     2.5项目启动类

     

     3.Pom文件添加依赖

    <dependencies>
        <!--SpringMVC模式的web应用-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--jdbc 数据库连接-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- 引入阿里数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- mybatisPlus 核心库 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>
        <!--测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    4.配置文件

    在resource目录下新建,application.yml文件,配置数据库连接驱动,日志级别。配置如下。

    # 配置端口
    server:
    port: 8081
    spring:
    # 配置数据源
    datasource:
    url: jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf-8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    # mybatis-plus相关配置
    mybatis-plus:
    # xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
    mapper-locations: classpath:com.liyh.mapper/*.xml
    # 以下配置均有默认值,可以不设置
    global-config:
    db-config:
    #主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
    id-type: auto
    #字段策略 IGNORED:"忽略判断" NOT_NULL:"非 NULL 判断") NOT_EMPTY:"非空判断"
    field-strategy: NOT_EMPTY
    #数据库类型
    db-type: MYSQL
    configuration:
    # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
    map-underscore-to-camel-case: true
    # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
    call-setters-on-nulls: true
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # 日志级别
    logging:
    level:
    root: info

    数据库表

    /*
     Navicat Premium Data Transfer
    
     Source Server         : localhost
     Source Server Type    : MySQL
     Source Server Version : 50622
     Source Host           : localhost:3306
     Source Schema         : db1
    
     Target Server Type    : MySQL
     Target Server Version : 50622
     File Encoding         : 65001
    
     Date: 28/08/2020 11:32:49
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for t_user
    -- ----------------------------
    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user`  (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `birthday` date NULL DEFAULT NULL,
      `gender` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `password` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `remark` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `station` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `telephone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Records of t_user
    -- ----------------------------
    INSERT INTO `t_user` VALUES (1, '2020-06-04', '1', 'admin', '$2a$10$qnWeSm.dqxgPXTeQlM.rR.CjezneVtUuIYg0TfPHzWQPy2hyc3dJq', '系统管理员', '正常', '888888', '管理员');
    INSERT INTO `t_user` VALUES (2, '2020-06-04', '2', 'xiaoming', '$2a$10$qnWeSm.dqxgPXTeQlM.rR.CjezneVtUuIYg0TfPHzWQPy2hyc3dJq', '营养健康师', '正常', '666666', '小明');
    
    SET FOREIGN_KEY_CHECKS = 1;

    5.开始编写代码及测试

    5.1 创建entity

    实体类:

    package com.liyh.entity;
    
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.Data;
    import java.io.Serializable;
    import java.util.Date;
    
    /**
     * 用户实体类
     * @Author: liyh
     * @Date: 2020/8/28 11:39
     */
    @Data
    @TableName(value = "t_user")
    public class User implements Serializable{
        private Integer id; // 主键
        private Date birthday; // 生日
        private String gender; // 性别
        private String username; // 用户名,唯一
        private String password; // 密码
        private String remark; // 备注
        private String station; // 状态
        private String telephone; // 联系电话
        private String name; // 姓名
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getRemark() {
            return remark;
        }
    
        public void setRemark(String remark) {
            this.remark = remark;
        }
    
        public String getStation() {
            return station;
        }
    
        public void setStation(String station) {
            this.station = station;
        }
    
        public String getTelephone() {
            return telephone;
        }
    
        public void setTelephone(String telephone) {
            this.telephone = telephone;
        }
    
    }
    User

    5.2 创建mapper

    在mapper包中创建UserMapper接口,并继承mybatisPlus的BaseMapper,如下图

    5.3 在启动类添加mapper扫描

    5.4 创建service和impl

     

    注意:在UserServiceImpl类,必须加上@Service注解,否则会报错 Field userService in com.liyh.mybatisplus.controller.UserController required

    5.5 创建controller

    这里我们看到,service中我们没有写任何方法,MyBatis-Plus官方封装了许多基本CRUD的方法,可以直接使用大量节约时间,MP共通方法详见IService,ServiceImpl,BaseMapper源码,写入操作在ServiceImpl中已有事务绑定,这里我们举一些常用的方法演示。

    package com.liyh.controller;
    
    import com.liyh.entity.User;
    import com.liyh.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import java.util.Date;
    import java.util.List;
    
    /**
     * @Author: liyh
     * @Date: 2020/8/28 11:52
     */
    @RestController
    @RequestMapping("/user")
    public class UserController {
        @Autowired
        UserService userService;
    
        /**
         * 根据用户id查询用户信息
         * @param userId
         * @return
         */
        //http://localhost:8080/user/getInfo?userId=1
        @RequestMapping("/getInfo")
        public User getInfo(String userId){
            User user = userService.getById(userId);
            System.out.println(user.getName());
            return user;
        }
    
        /**
         * 查询所有信息
         * @return
         */
        //http://localhost:8080/user/getUserList
        @RequestMapping("/getUserList")
        public List<User> getUserList(){
            return userService.list();
        }
    
        /**
         * 新增用户信息
         */
        //http://localhost:8080/user/saveInfo
        @RequestMapping("/saveInfo")
        public void saveInfo(){
            User user = new User();
            user.setBirthday(new Date());
            user.setGender("1");
            user.setUsername("apple");
            user.setPassword("apple");
            user.setRemark("消费大师");
            user.setStation("冻结");
            user.setTelephone("111111");
            user.setName("平锅");
            userService.save(user);
        }
    }

    5.6 项目总体结构

    5.7 启动项目进行测试

    5.7.1 测试getInfo接口

    /**
         * 根据用户id查询用户信息
         * @param userId
         * @return
         */
        //http://localhost:8080/user/getInfo?userId=1
        @RequestMapping("/getInfo")
        public User getInfo(String userId){
            User user = userService.getById(userId);
            System.out.println(user.getName());
            return user;
        }

    5.7.2 测试getUserList接口

    /**
         * 查询所有信息
         * @return
         */
        //http://localhost:8080/user/getUserList
        @RequestMapping("/getUserList")
        public List<User> getUserList(){
            return userService.list();
        }

    5.7.3 测试save接口

    6. 数据库

    7. 项目地址:https://gitee.com/liyhGitee/springboot

    发布自己的项目到git,浏览:https://www.cnblogs.com/liyhbk/p/13578717.html

    8. 结束语

    上天的程序员后续分享,关于springboot的更多功能和使用,每一个截图都是实战的结果,谢谢阅读,点波关注哟!!!

  • 相关阅读:
    20145221 《Java程序设计》第五周学习总结
    Atom插件安装
    Atom使用心得
    20145221 《Java程序设计》第四周学习总结
    20145221 《Java程序设计》第三周学习总结
    20145221 《Java程序设计》第二周学习总结
    20145221 《Java程序设计》第一周学习总结
    调查问卷
    《Java程序设计》第四章-认识对象
    在WEB-INF目录下的web.xml文件
  • 原文地址:https://www.cnblogs.com/liyhbk/p/13572989.html
Copyright © 2011-2022 走看看