zoukankan      html  css  js  c++  java
  • SpringBoot集成mybatis-plus

    myBatis-plus文档: https://mp.baomidou.com/guide/annotation.html#tablefield

    1、创建数据库表

    DROP TABLE IF EXISTS test_user;
    
    CREATE TABLE test_user
    (
    	id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    	name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    	age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    	email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    	PRIMARY KEY (id)
    );
    INSERT INTO test_user (id, name, age, email) VALUES
    (1, 'Jone', 18, 'test1@baomidou.com'),
    (2, 'Jack', 20, 'test2@baomidou.com'),
    (3, 'Tom', 28, 'test3@baomidou.com'),
    (4, 'Sandy', 21, 'test4@baomidou.com'),
    (5, 'Billie', 24, 'test5@baomidou.com');
    

    2、引入mybatis-plus依赖包

    <dependencies>
      <!--druid数据源-->
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.1.8</version>
      </dependency>
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.51</version>
      </dependency>
      <!--mysql-->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <scope>runtime</scope>
      </dependency>
    
      <!--mybatis-plus 依赖-->
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
          <version>3.2.0</version>
      </dependency>
      <!-- mybatis plus 代码生成器依赖 -->
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-generator</artifactId>
          <version>3.2.0</version>
      </dependency>
      <!-- 代码生成器模板 -->
      <dependency>
          <groupId>org.freemarker</groupId>
          <artifactId>freemarker</artifactId>
          <version>2.3.29</version>
      </dependency>
    
      <!-- 工具包 -->
      <!-- lombok -->
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <optional>true</optional>
      </dependency>
      <!-- 日志 -->
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
      </dependency>
      <!-- junit -->
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <scope>test</scope>
      </dependency>
    </dependencies>
    

    3、创建一个实体类

    package com.example.mybatisplus.bean;
    
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import com.baomidou.mybatisplus.annotation.TableField;
    import lombok.*;
    import lombok.experimental.Accessors;
    
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Accessors(chain = true) //lombok的实验类特性
    @Builder
    @TableName("test_user") //指定对应的数据库表
    public class User {
        @TableId(value = "id", type = IdType.AUTO) //id自增
        private Integer id;
        @TableField(value = "name") //指定对应的数据库表字段
        private String name;
    
        private Integer age;
    
        private String email;
        @TableField(exist = false) //不映射数据库表中的任何字段
        private String like;
    }
    

    4、创建一个继承BaseMapper的mapper

    • BaseMapper提供了各种CRUD方法,传入一个泛型
    package com.example.mybatisplus.mapper;
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.example.mybatisplus.bean.User;
    
    //使用mybatis-plus增强接口
    public interface UserMapper extends BaseMapper<User> {
    
    }
    

    5、在Application入口引入mapper

    package com.example.mybatisplus;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    @MapperScan(value = "com.example.mybatisplus.mapper")
    @SpringBootApplication
    public class MybatisplusApplication {
        public static void main(String[] args) {
            SpringApplication.run(MybatisplusApplication.class, args);
        }
    }
    

    6、controller控制器

    package com.example.mybatisplus.controller;
    
    import com.example.mybatisplus.bean.User;
    import com.example.mybatisplus.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    import java.util.List;
    
    @RestController
    public class UserController {
        @Autowired
        UserService userService;
    
        //增加
        @PostMapping("/insertUser")
        public Integer insertUser(@RequestBody User user){
            return userService.insertUser(user);
        }
        //删除
        @GetMapping("/delUser/{id}")
        public Integer delUser(@PathVariable("id") Integer id){
            return userService.delUser(id);
        }
        //修改一条
        @PostMapping("/updateUserById")
        public Integer updateUser(@RequestBody User user){
            return userService.updateUser(user);
        }
        //批量修改
        @PostMapping("/updateUserAll")
        public Integer updateUser2(@RequestBody User user){
            return userService.updateUser2(user);
        }
        //查询所有
        @GetMapping("/getUsers")
        public void findAllUser(){
            List<User> users = userService.getUsers();
            users.forEach(user -> System.out.println(user));
        }
        //查询一条
        @GetMapping("/getUser/{id}")
        public User getUser(@PathVariable("id") Integer id){
            return userService.getUser(id);
        }
        //分页查询
        @GetMapping("selectUserPage")
        public UserVo selectUserPage(UserVo userVo){
            return userService.selectUserPage(userVo.getCurrent(), userVo.getSize());
        }
    }
    

    7、service层

    package com.example.mybatisplus.service;
    
    import com.example.mybatisplus.bean.User;
    import java.util.List;
    
    public interface UserService {
        
        public Integer insertUser(User user);
    
        public Integer delUser(Integer id);
    
        public Integer updateUser(User user);
    
        public Integer updateUser2(User user);
    
        public User getUser(Integer id);
    
        public List<User> getUsers();
    
        public UserVo selectUserPage(Integer current, Integer size);
    }
    

    8、service/impl层

    package com.example.mybatisplus.service.impl;
    
    import com.example.mybatisplus.bean.User;
    import com.example.mybatisplus.mapper.UserMapper;
    import com.example.mybatisplus.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class UserServiceImpl implements UserService {
        @Autowired
        protected UserMapper userMapper;
    
        @Override
        public Integer updateUser(User user) {
            return userMapper.updateById(user);
        }
        @Override
        public Integer updateUser2(User user) {
            QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
            queryWrapper.eq("age",20);
            return userMapper.update(user,queryWrapper);
        }
        @Override
        public Integer insertUser(User user) {
            return userMapper.insert(user);
        }
        @Override
        public User getUser(Integer id) {
            return userMapper.selectById(id);
        }
    
        @Override
        public Integer delUser(Integer id) {
            return userMapper.deleteById(id);
        }
    
        @Override
        public List<User> getUsers() {
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    //        queryWrapper.eq("age",20); //设置等值查询
    //        queryWrapper.lt("age",20); //设置小于查询
    //        queryWrapper.le("age",20); //设置小于等于查询
    //        queryWrapper.gt("age",20); //设置大于查询
    //        queryWrapper.ge("age",20); //设置大于等于查询
    //        queryWrapper.like("name","J"); //模糊查询 like %?%
    //        queryWrapper.likeLeft("name","e"); //模糊查询 like %?
            queryWrapper.likeRight("name","e"); //模糊查询 like ?%
            List<User> users = userMapper.selectList(queryWrapper);
            return users;
        }
        @Override
        public UserVo selectUserPage(Integer current, Integer size) {
            UserVo userVo = new UserVo();
            IPage<User> page = new Page<>(current, size);
            userMapper.selectPage(page, null);
            userVo.setCurrent(current);
            userVo.setSize(size);
            userVo.setTotal(page.getTotal());
            userVo.setUserList(page.getRecords());
            return userVo;
        }
    }
    

    9、使用分页查询

    • 新建MyBatisPlusConfig文件注册分页插件
    package com.example.mybatisplus.config;
    
    import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
    import org.mybatis.spring.annotation.MapperScan;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    @EnableTransactionManagement
    @Configuration
    @MapperScan("com.example.mybatisplus.mapper")
    public class MyBatisPlusConfig {
        private final static Logger logger = LoggerFactory.getLogger(MyBatisPlusConfig.class);
    
        /**
         * @description: 配置分页插件
         * @author: gradual
         * @date: 2019/1/15 10:17
         * @param: []
         * @return: com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
         */
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            logger.debug("注册分页插件");
            PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
            // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
            // paginationInterceptor.setOverflow(false);
            // 设置最大单页限制数量,默认 500 条,-1 不受限制
            // paginationInterceptor.setLimit(500);
            // 开启 count 的 join 优化,只针对部分 left join
            paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
            return paginationInterceptor;
        }
    }
    
    • 创建分页实体类
    package com.example.mybatisplus.vo;
    
    import com.example.mybatisplus.bean.User;
    import lombok.Data;
    import java.util.List;
    
    @Data
    public class UserVo {
        private Integer current;
        private Integer size;
        private Long total;
        private List<User> userList;
    }
    
    • 分页测试
  • 相关阅读:
    CentOS下Redis 2.2.14安装配置详解(转载)
    centos 6.3 64位安装php5.5及配置tengine
    linux下安装php扩展redis缓存
    linux安装ruby ruby-devel rubygems bundler
    composer的create-project安装php框架laravel for mac教程
    Homebrew安装php5及composer for mac教程
    KeepAlive详解
    方便mac os 10.9系统中phpstorm配置php运行环境
    Android使用adb工具及root权限完成手机抓包
    linux服务器监控流量sh脚本
  • 原文地址:https://www.cnblogs.com/lin127/p/13043954.html
Copyright © 2011-2022 走看看