zoukankan      html  css  js  c++  java
  • SpringBoot-15-之整合MyBatis-注解篇+分页

    0.相关配置

    pom.xml

    <!--mysql依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
            
    <!--mybatis依赖-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>
    
    <!-- 为简化set,get,toString代码引入lombok -->
    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.2</version>
        <scope>provided</scope>
    </dependency>
    
    

    application.yml

    spring:
        datasource:
          url: jdbc:mysql://localhost:3306/zoom?useSSL=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
          username: root
          password: root
          driver-class-name: com.mysql.jdbc.Driver
    
    使用的表
    9414344-d495e973b69262e4.png
    sword.png

    1.剑的实体类:com.toly1994.toly_mybatis.entity.Sword
    /**
     * 作者:张风捷特烈
     * 时间:2018/8/17 0017:8:23
     * 邮箱:1981462002@qq.com
     * 说明:剑的实体类
     */
    @Data//=@Getter +@Setter
    public class Sword {
        private Integer id;
        private String name;
        private Integer atk;
        private Integer hit;
        private Integer crit;
        private Integer attr_id;
        private Integer type_id;
    }
    
    2.剑的数据映射类:com.toly1994.toly_mybatis.mapper.SwordMapper
    /**
     * 作者:张风捷特烈
     * 时间:2018/8/17 0017:8:41
     * 邮箱:1981462002@qq.com
     * 说明:剑的数据映射类
     */
    public interface SwordMapper {
        /**
         * 查询
         *
         * @param name
         * @return
         */
        @Select("SELECT*FROM sword WHERE NAME=#{name}")
        Sword findByName(@Param("name") String name);
    
        /**
         * 添加
         *
         * @param name
         * @param atk
         * @param hit
         * @param crit
         * @param attr_id
         * @param type_id
         * @return
         */
        @Select("INSERT sword VALUES(DEFAULT,#{name},#{atk},#{hit},#{crit},#{attr_id},#{type_id})")
        void insert(@Param("name") String name,
                    @Param("atk") Integer atk,
                    @Param("hit") Integer hit,
                    @Param("crit") Integer crit,
                    @Param("attr_id") Integer attr_id,
                    @Param("type_id") Integer type_id
        );
    }
    
    3.服务层:com.toly1994.toly_mybatis.service.SwordService
    /**
     * 作者:张风捷特烈
     * 时间:2018/8/17 0017:8:48
     * 邮箱:1981462002@qq.com
     * 说明:服务层
     */
    @Service//坑点1别忘加Service注解
    public class SwordService {
    
        @Autowired
        private SwordMapper mSwordMapper;
    
    
        public void insertSword(String name, Integer atk,
                                Integer hit,
                                Integer crit,
                                Integer attr_id,
                                Integer type_id) {
            mSwordMapper.insert(name, atk, hit, crit, attr_id, type_id);
        }
    
        public Sword findByName(String name) {
            return mSwordMapper.findByName(name);
        }
    }
    
    4.剑的控制层:com.toly1994.toly_mybatis.controller.SwordController
    /**
     * 作者:张风捷特烈
     * 时间:2018/8/17 0017:8:55
     * 邮箱:1981462002@qq.com
     * 说明:剑的控制层
     */
    @RestController
    public class SwordController {
    
        @Autowired
        private SwordService mSwordService;
    
        @GetMapping("/insert")
        public String insertSword(String name, Integer atk,
                                  Integer hit,
                                  Integer crit,
                                  Integer attr_id,
                                  Integer type_id) {
    
            mSwordService.insertSword(name, atk, hit, crit, attr_id, type_id);
    
            return "OK";
        }
    
        @GetMapping("/findByName")
        public Sword findByName(String name) {
            return mSwordService.findByName(name);
        }
    }
    
    5.启动类:com.toly1994.toly_mybatis.TolyMybatisApplication
    @SpringBootApplication
    //坑点2,别忘了扫包
    @MapperScan(basePackages = {"com.toly1994.toly_mybatis.mapper"})
    public class TolyMybatisApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(TolyMybatisApplication.class, args);
        }
    }
    
    6.结果
    插入接口:
    http://localhost:8080/insert?name=赤凰&atk=3000&hit=100&crit=5&attr_id=1&type_id=2
    查询接口:
    http://localhost:8080/findByName?name=赤凰
    
    9414344-10299601e92984c9.png
    mybatis测试.png

    7.事务
    故意造异常:com.toly1994.toly_mybatis.service.SwordService#insertSword
    public void insertSword(String name, Integer atk,
                            Integer hit,
                            Integer crit,
                            Integer attr_id,
                            Integer type_id) {
        mSwordMapper.insert(name, atk, hit, crit, attr_id, type_id);
        int i = 1 / atk;//异常处
    }
    
    http://localhost:8080/insert?name=赤凰&atk=0&hit=100&crit=5&attr_id=1&type_id=2
    
    9414344-b9ab0d02a49a5e37.png
    no_transactional.png
    使用事务:com.toly1994.toly_mybatis.service.SwordService#insertSword
    @Transactional
    public void insertSword(String name, Integer atk,
                            Integer hit,
                            Integer crit,
                            Integer attr_id,
                            Integer type_id) {
        mSwordMapper.insert(name, atk, hit, crit, attr_id, type_id);
        int i = 1 / atk;
    }
    
    9414344-5d6f4b451dc52d87.png
    Transactional.png

    8.分页
    8-1:pom.xml
    <!-- 分页插件 -->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.2.5</version>
    </dependency>
    
    8-2:application.yml
    pagehelper:
      helper-dialect: mysql
      reasonable: true
      support-methods-arguments: true
      params: count==countSql
      page-size-zero: true
    
    8-3:com.toly1994.toly_mybatis.mapper.SwordMapper
        /**
         * 查询所有
         *
         * @return
         */
        @Select("SELECT*FROM sword")
        List<Sword> findALL();
    
    8-4:com.toly1994.toly_mybatis.service.SwordService
        /**
         * 分页查询
         * @param page 当前页数
         * @param pageSize 每页个数
         * @return
         */
        public PageInfo<Sword> findAll(int page,int pageSize) {
            PageHelper.startPage(page, pageSize);//改写语句实现分页查询
            List<Sword> all = mSwordMapper.findALL();
            PageInfo<Sword> info = new PageInfo<>(all);
            return info;
        }
    
    8-5:com.toly1994.toly_mybatis.controller.SwordController
        //http://localhost:8080/findAllByPage?page=1&pageSize=3
        @GetMapping("/findAllByPage")
        public PageInfo<Sword> findAll(int page, int pageSize) {
            return mSwordService.findAll(page, pageSize);
        }
    
    8-6:结果演示:
    9414344-87a0f1ad82c44ff1.png
    sword表.png
    9414344-ad907d7acde1874e.png
    分页查询.png
  • 相关阅读:
    FZU Monthly-201906 tutorial
    FZU Monthly-201906 获奖名单
    FZU Monthly-201905 tutorial
    BZOJ1009 GT考试
    BZOJ2428 均分数据
    模拟退火
    BZOJ3680 吊打XXX
    BZOJ4818 序列计数
    BZOJ4103 异或运算
    BZOJ3512 DZY Loves Math IV
  • 原文地址:https://www.cnblogs.com/toly-top/p/9781958.html
Copyright © 2011-2022 走看看