Mybatis系列二-快速開發
mybatis學習系列第二篇
分頁
在網頁中常常用到,在查詢資料庫內容並想將其輸出的時候,因為有時有多組數據,一頁展示過於突兀,所以會用到分頁操作。
在sql用limit來分頁。
首先是UserMapper.xml
<!-- 實現分頁的介面 -->
<select id="getUserByLimit" parameterType="map" resultType="User">
select * from mybatis.user limit #{startIndex},#{pageSize};
</select>
然後是UserMapper.java
// 實現分頁查詢操作
List<User> getUserByLimit(Map<String,Integer> map);
再到測試類中的程式碼
public void getUserByLimit() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
Map<String,Integer> map = new HashMap<>();
//通過map來傳參來實現數據的交互綁定
map.put("startIndex", 1);
map.put("pageSize", 2);
List<User> userlist = mapper.getUserByLimit(map);
for (User user : userlist) {
System.out.println(user);
}
sqlSession.close();
}
還可以使用RowBounds來實現分頁
UserMapper.java
// 實現分頁的方法二
List<User> getUserByLimit2();
UserMapper.xml
<!-- 實現分頁的方法二 -->
<select id="getUserByLimit2" resultType="User">
select * from mybatis.user ;
</select>
RowBounds構造方法,和limit相似。

test程式碼
public void getUserByLimit2() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
RowBounds rowBounds = new RowBounds(1,2);
// 使用java程式碼來實現分頁操作
List<User> selectList = sqlSession.selectList("com.yhy.dao.UserDao.getUserByLimit2", null, rowBounds);
for (User user : selectList) {
System.out.println(user);
}
sqlSession.close();
}
輸出結果

pageHelper分頁插件
註解開發
本質是使用反射,還有動態代理模式
在工具類MybatisUtils中,打開自動提交事務,這樣在後續的編寫程式碼中就不要在使用commit。

// 有了工廠就可以獲得實例來使用,sqlsession就可以面向資料庫操作jdbc
// 打開自動提交事務
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
註解開發流程-實例
整體文件結構

使用註解開發的時候,介面裡面定義的方法就是使用註解的地方,實例如下
//使用註解的方法,之前是需要寫xml文件進行配置,這裡就直接使用註解的方法
//這個方法是查詢所有用戶資訊
@Select("select * from user")
List<User> getUsers();
在主配置文件中,也是關鍵所在,綁定的有所不同。將文件資源標籤改為class,並將所在的類位置標出。

測試類-使用的步驟和之前的沒有使用註解的方法一樣。
@Test
public void test() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getUsers();
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
總的來說,註解是分散的數據配置,而xml是集中的數據配置。
使用註解可以很多程度來簡化工作,省去了很多配置文件的編寫,但有時註解過於分散不利於管理和維護,在一些通用配置上,像資料庫連接等,還是比較建議xml文件進行配置,因為XML方式比註解的可擴展性和複雜性維護上好的多。所以註解有利有弊,看什麼場景去使用,用對了就是事半功倍的效果!
了解Lombok
Lombok是一個java開發插件,目的是簡化程式碼,方便開發,通過註解省去了一些pojo中的get、set方法和構造方法,還有一些其他的tostring和equals等。有些介紹可以參考官網中的文檔,當然對於這款插件,歡呼聲和罵聲一直都充斥在各個平台,各種分析文章網上也有很多,我就不再去記錄太多了。但任何事情都有其兩面性,理性看待,喜歡覺得有用大家就用,不喜歡就當了解一些也不為過。下面是記錄使用的一些圖片程式碼。
1、插件下載--setting裡面的插件

2、maven導包,在官網找到資訊進行導包,選擇自己所需要的版本進行使用

我選擇了最新的版本,有錯再去解決
<dependencies>
<!-- //mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
</dependencies>
3、使用實例
在插件管理查看資訊裡面就可以看到Lombok的一些介紹嗎,下面是一些註解的介紹
@Getter and @Setter //生成get和set方法
@FieldNameConstants
@ToString //tostring方法
@EqualsAndHashCode //equals和hashcode方法的生成
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor //全參構造和無參構造和一個自定義構造
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger, @CustomLog
@Data //這個最常見了,加一個可以默認生成了一系列的方法,可以見下圖使用
@Builder
@SuperBuilder
@Singular
@Delegate
@Value
@Accessors
@Wither
@With
@SneakyThrows
@val
@var
experimental @var
@UtilityClass
Lombok config system
Code inspections
Refactoring actions (lombok and delombok)
將變數定義留著,其他方法注釋掉,就可以自動生成了

默認是生成了無參的構造器,加入AllArgsConstructor就可以了

最後留下的程式碼就剩得這麼乾淨。自己看的確實很舒服,當用的多了,不懂的人可能夠嗆哈哈哈。

最後
這是第二篇mybatis文章,謝謝閱讀。有錯誤請多多指教,諒解!跟隨b站狂神的影片記錄的學習筆記
