美文网首页SpringBootspringboot个人学习
SpringBoot+MyBatis+Swagger2整合进行增

SpringBoot+MyBatis+Swagger2整合进行增

作者: HeloWxl | 来源:发表于2020-03-08 14:35 被阅读0次

    前言:
    本片文章采用的是SpringBoot+Mybatis+Swagger2,目的是使用
    Mybatis完成增删改查操作。第一部分讲的是通过xml文件进行增删改查操作,第二部分讲解的是通过注解进行增删改查操作。

    Mybatis官网(官网内容很详细哦):Mybatis官网

    一、增删改查操作(通过XML)

    1.Sql语句

    -- ----------------------------
    -- Table structure for user
    -- ----------------------------
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(20) DEFAULT NULL,
      `sex` varchar(6) DEFAULT NULL,
      `birthday` date DEFAULT NULL,
      `address` varchar(20) DEFAULT NULL,
      `password` varchar(20) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
    SET FOREIGN_KEY_CHECKS = 1;
    

    2.项目结构

    image.png

    3.使用自动生成插件-生成代码

    大家可以参考这篇文章,使用EasyCode插件生成代码:EasyCode(代码神器)
    需要修改的地方

    • UserDao.java
      添加@Mapper注解


      image.png
    • 启动类
      添加@MapperScan注解


      image.png

    4.pom.xml

     <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.1</version>
            </dependency>
            <!--热部署-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <!--mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    

    5 配置文件

    application.yml

    spring:
    #  数据源
      datasource:
    #    用户名
        username: root
    #    密码
        password: 123456
    #    链接
        url: jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    #    驱动
        driver-class-name: com.mysql.jdbc.Driver
    #mybatis配置
    mybatis:
      mapper-locations: classpath:mapper/*Dao.xml
     #实体扫描,多个package用逗号或者分号分隔
      type-aliases-package: com.mb.helo.entity
    

    6、entity

    @Data
    public class User implements Serializable {
        private static final long serialVersionUID = -75231801200113829L;
        private Integer id;
        private String username;
        private String sex;
        private Object birthday;
        private String address;
        private String password;
    }
    

    7、dao

    @Mapper
    public interface UserDao {
    
        /**
         * 通过ID查询单条数据
         *
         * @param id 主键
         * @return 实例对象
         */
        User queryById(Integer id);
    
        /**
         * 查询指定行数据
         *
         * @param offset 查询起始位置
         * @param limit 查询条数
         * @return 对象列表
         */
        List<User> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);
    
    
        /**
         * 通过实体作为筛选条件查询
         *
         * @param user 实例对象
         * @return 对象列表
         */
        List<User> queryAll(User user);
    
        /**
         * 新增数据
         *
         * @param user 实例对象
         * @return 影响行数
         */
        int insert(User user);
    
        /**
         * 修改数据
         *
         * @param user 实例对象
         * @return 影响行数
         */
        int update(User user);
    
        /**
         * 通过主键删除数据
         *
         * @param id 主键
         * @return 影响行数
         */
        int deleteById(Integer id);
    
    }
    

    8、service

    public interface UserService {
    
        /**
         * 通过ID查询单条数据
         *
         * @param id 主键
         * @return 实例对象
         */
        User queryById(Integer id);
    
        /**
         * 查询多条数据
         *
         * @param offset 查询起始位置
         * @param limit 查询条数
         * @return 对象列表
         */
        List<User> queryAllByLimit(int offset, int limit);
    
        /**
         * 新增数据
         *
         * @param user 实例对象
         * @return 实例对象
         */
        User insert(User user);
    
        /**
         * 修改数据
         *
         * @param user 实例对象
         * @return 实例对象
         */
        User update(User user);
    
        /**
         * 通过主键删除数据
         *
         * @param id 主键
         * @return 是否成功
         */
        boolean deleteById(Integer id);
    
    }
    

    9、serviceImpl

    @Service("userService")
    public class UserServiceImpl implements UserService {
        @Resource
        private UserDao userDao;
    
        /**
         * 通过ID查询单条数据
         *
         * @param id 主键
         * @return 实例对象
         */
        @Override
        public User queryById(Integer id) {
            return this.userDao.queryById(id);
        }
    
        /**
         * 查询多条数据
         *
         * @param offset 查询起始位置
         * @param limit 查询条数
         * @return 对象列表
         */
        @Override
        public List<User> queryAllByLimit(int offset, int limit) {
            return this.userDao.queryAllByLimit((offset-1)*limit, limit);
        }
    
        /**
         * 新增数据
         *
         * @param user 实例对象
         * @return 实例对象
         */
        @Override
        public User insert(User user) {
            this.userDao.insert(user);
            return user;
        }
    
        /**
         * 修改数据
         *
         * @param user 实例对象
         * @return 实例对象
         */
        @Override
        public User update(User user) {
            this.userDao.update(user);
            return this.queryById(user.getId());
        }
    
        /**
         * 通过主键删除数据
         *
         * @param id 主键
         * @return 是否成功
         */
        @Override
        public boolean deleteById(Integer id) {
            return this.userDao.deleteById(id) > 0;
        }
    }
    

    10、controller

    @RestController
    @RequestMapping("user")
    public class UserController {
        /**
         * 服务对象
         */
        @Resource
        private UserService userService;
    
        /**
        * @Description: 根据主键删除
        * @params: [id]
        * @return: com.mb.helo.entity.User
        * @Author: wangxianlin
        * @Date: 2020/3/8 5:15 AM
        */ 
            @GetMapping("queryById")
        public User queryById(@RequestParam("id") Integer id) {
            return this.userService.queryById(id);
        }
    
    
        /**
        * @Description: 分页查询用户列表
        * @params: [offset, limit]
        * @return: java.util.List<com.mb.helo.entity.User>
        * @Author: wangxianlin
        * @Date: 2020/3/8 5:14 AM
        */
        @GetMapping("queryAllByLimit")
        public List<User> queryAllByLimit(@RequestParam("offset") int offset,@RequestParam("limit")  int limit) {
            return this.userService.queryAllByLimit(offset, limit);
        }
    
       
        /**
        * @Description: 新增用户
        * @params: [user]
        * @return: com.mb.helo.entity.User
        * @Author: wangxianlin
        * @Date: 2020/3/8 5:14 AM
        */
        @PostMapping("insert")
        public User insert(@RequestBody User user) {
            return  this.userService.insert(user);
        }
    
      
        /**
        * @Description: 修改用户
        * @params: [user]
        * @return: com.mb.helo.entity.User
        * @Author: wangxianlin
        * @Date: 2020/3/8 5:14 AM
        */
        @PostMapping("update")
        public User update(@RequestBody User user) {
            this.userService.update(user);
            return this.queryById(user.getId());
        }
    
        /**
        * @Description: 根据主键删除用户
        * @params: [id]
        * @return: boolean
        * @Author: wangxianlin
        * @Date: 2020/3/8 5:14 AM
        */
        @GetMapping("deleteById")
        public boolean deleteById(Integer id) {
            return this.userService.deleteById(id);
        }
    }
    

    11、测试

    • 增加


      image.png
    • 分页查询


      image.png
    • 删除


      image.png
    • 根据主键查询


      image.png
    • 修改


      image.png

    二、增删改查操作(通过注解)

    • UserDao.java
    /***************************注解方式********************************/
    
        /**
        * @Description: 分页查询 -注解方式
        * @params: []
        * @return: java.util.List<com.mb.helo.entity.User>
        * @Author: wangxianlin
        * @Date: 2020/3/8 3:39 PM
        */ 
        @Select("select * from user limit #{page} , #{limit}")
        List<User> queryAllLimitByAnnotation(@Param("page") int page,@Param("limit") int limit);
    
        /**
        * @Description: 根据主键查询 -注解方式
        * @params: []
        * @return: int
        * @Author: wangxianlin
        * @Date: 2020/3/8 3:42 PM
        */ 
        @Select("select * from user where id = #{id}")
        User getUserByIdAnnotation(@Param("id") int id);
    
        /**
        * @Description: 添加 -注解方式
        * @params: [user]
        * @return: int
        * @Author: wangxianlin
        * @Date: 2020/3/8 3:53 PM
        */ 
        @Insert(" insert into user (username,sex,birthday,address,password) values(#{username}," +
                "#{sex},#{birthday},#{address},#{password}) ")
        int insertByAnnotation(User user);
    
        /**
        * @Description: 根据主键删除 - 注解方式
        * @params: [id]
        * @return: int
        * @Author: wangxianlin
        * @Date: 2020/3/8 3:58 PM
        */ 
        @Delete("delete from user where id = #{id}")
        int deleteByAnnotation(@Param("id") int id);
    
     /**
        * @Description: 修改
        * @params: [user]
        * @return: int
        * @Author: wangxianlin
        * @Date: 2020/3/8 6:53 PM
        */ 
        @PostMapping("updateUserById")
        public int updateUserById(@RequestBody User user) {
            return this.userService.updateUserById(user);
        }
    

    测试

    • 分页操作


      分页
    • 根据主键进行查找


      根据主键进行查找
    • 根据主键进行删除


      根据主键进行删除
    • 添加


      添加
    • 修改


      image.png

    相关文章

      网友评论

        本文标题:SpringBoot+MyBatis+Swagger2整合进行增

        本文链接:https://www.haomeiwen.com/subject/ufpddhtx.html