SpringBoot-15-之整合MyBatis-註解篇+分頁
阿新 • • 發佈:2018-12-31
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
使用的表
sword.png
1.劍的實體類:com.toly1994.toly_mybatis.entity.Sword
/** * 作者:張風捷特烈 * 時間:2018/8/17 0017:8:23 * 郵箱:[email protected] * 說明:劍的實體類 */ @Data//[email protected] [email protected] 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 * 郵箱:[email protected]q.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 * 郵箱:[email protected] * 說明:服務層 */ @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 * 郵箱:[email protected] * 說明:劍的控制層 */ @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=赤凰
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
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; }
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:結果演示:
sword表.png
分頁查詢.png