SpringBoot-16-之整合MyBatis-xml篇+單元測試
0.專案結構
java dao |---SwordDao entity |---Sword resources mapper |---Sword.xml application.yml
1.application.yml
#坑點0 配置mybatis的xml位置mybatis: mapper-locations: classpath:mapper/*.xml
2.新建dao資料夾,新建dao介面:SwordDao.java
public interface SwordDao { List<Sword> findALL(); Sword findByName(@Param("name") String name); //坑點1 java沒有儲存形參的記錄,所以多引數使用者@Param("name")起名字,不然無法識別 int 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.在resources下新建mapper資料夾,再建Sword.xml檔案,為dao層提供SQL語句
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ""><!--坑點2:名稱空間指向對應dao類名--><mapper namespace="com.toly1994.toly_mybatis.dao.SwordDao"> <!--坑點3:id為dao中相應方法名--> <insert id="insert"> insert into sword(name,atk,hit,crit,attr_id,type_id) values (#{name},#{atk},#{hit},#{crit},#{attr_id},#{type_id}) </insert> <!--坑點4:返回實體或實體集合時 resultType 指向對應實體類名--> <select id="findByName" resultType="com.toly1994.toly_mybatis.entity.Sword"> SELECT*FROM sword WHERE NAME=#{name} </select> <select id="findALL" resultType="com.toly1994.toly_mybatis.entity.Sword"> SELECT*FROM sword </select></mapper>
4.將dao新增掃包範圍:com.toly1994.toly_mybatis.TolyMybatisApplication
//坑點5:將dao新增掃包範圍@MapperScan(basePackages = {"com.toly1994.toly_mybatis.mapper","com.toly1994.toly_mybatis.dao"})
5.單元測試:test資料夾下
com.toly1994.toly_mybatis.dao.SwordDaoTest
@RunWith(SpringRunner.class)@SpringBootTestpublic class SwordDaoTest { @Autowired private SwordDao mSwordDao; @Test public void findALL() { List<Sword> all = mSwordDao.findALL(); System.out.println(all.get(5));//Sword(id=6, name=風躍, atk=9020, hit=10, crit=10, attr_id=2, type_id=2) } @Test public void findByName() { Sword 赤凰 = mSwordDao.findByName("赤凰"); System.out.println(赤凰);//Sword(id=13, name=赤凰, atk=0, hit=100, crit=5, attr_id=1, type_id=2) } @Test public void insert() { int insert = mSwordDao.insert("尤恨", 4000, 100, 100, 1, 1); System.out.println(insert);//1 } }
6.聯合查詢:可能會疑惑attr_id和type_id是幹嘛的,其實是兩張關聯表
聯合查詢.png
修改實體類兩個欄位:
@Data//=@Getter +@Setterpublic class Sword { private Integer id; private String name; private Integer atk; private Integer hit; private Integer crit; private String type_name;//改為String private String attr;//改為String}
修改查詢所有的SQL語句
<select id="findALL" resultType="com.toly1994.toly_mybatis.entity.Sword"> SELECT id,name,atk,hit,crit,type_name,attr FROM sword AS s INNER JOIN sword_type AS t ON s.type_id = t.type_id INNER JOIN sword_attr AS a ON s.attr_id = a.attr_id; </select>
測試:可見兩張表和主表連在一起了
@Test public void findALL() { List<Sword> all = mSwordDao.findALL(); System.out.println(all.get(5)); //Sword(id=6, name=風躍, atk=9020, hit=10, crit=10, type_name=仙界, attr=木) }
作者:張風捷特烈
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1806/viewspace-2821052/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- .net持續整合sonarqube篇之 sonarqube整合單元測試
- Go 單元測試之Mysql資料庫整合測試GoMySql資料庫
- .net持續整合單元測試篇之單元測試簡介以及在visual studio中配置Nunit使用環境
- 測試 之Java單元測試、Android單元測試JavaAndroid
- 單元/整合測試服務
- 這個工具憑什麼風靡全球?DevOps工具鏈整合之單元測試整合篇dev
- .Net單元測試xUnit和整合測試指南(1)
- Mokito 單元測試與 Spring-Boot 整合測試Springboot
- Flutter 學習之路 - 測試(單元測試,Widget 測試,整合測試)Flutter
- go 單元測試進階篇Go
- 單元測試:開篇明義
- .netcore持續整合測試篇之測試方法改造NetCore
- Go 單元測試之mock介面測試GoMock
- 軟體測試---單元、整合、系統、驗收測試
- Spring Boot單元和整合測試概述 | rieckpilSpring BootKPI
- Tessy—嵌入式軟體單元測試/整合測試工具
- Tessy — 嵌入式軟體單元測試/ 整合測試工具
- Java中的單元測試與整合測試最佳實踐Java
- 第 15 篇:介面的單元測試
- Java單元測試神器之MockitoJavaMockito
- Java單元測試技巧之PowerMockJavaMock
- WinAMS--嵌入式軟體單元測試/整合測試工具
- Tessy—支援複雜場景測試的單元整合測試工具
- .net持續整合測試篇之Nunit引數化測試
- 單元測試:單元測試中的mockMock
- 測試開發之單元測試-禪道結合ZTF驅動單元測試執行
- Java Junit單元測試(入門必看篇)Java
- springboot系列文章之使用單元測試Spring Boot
- 開發必備之單元測試
- Go 單元測試之HTTP請求與API測試GoHTTPAPI
- .net持續整合測試篇之Nunit that斷言
- C&C++程式碼單元整合測試培訓C++
- Spring Boot單元測試之服務層測試總結Spring Boot
- Java單元測試之JUnit 5快速上手Java
- 單元測試,只是測試嗎?
- 單元測試-【轉】論單元測試的重要性
- Springboot整合JUnit5優雅進行單元測試Spring Boot
- .netcore持續整合測試篇之搭建記憶體伺服器進行整合測試一NetCore記憶體伺服器