Mybatis分頁、註解開發以及lombok簡單使用
阿新 • • 發佈:2021-10-21
7、分頁
思考:為什麼要分頁?
- 減少資料的處理量
7.1、使用Limit分頁
語法:SELECT * FROM user limit startIndex,pagesize;
SELECT * FROM user LIMIT 3 # [0,N]
使用Mybatis實現分頁,核心SQL
-
介面
List<User> getUserByLimit(Map<String , Integer> map);
-
Mapper.xml
<select id="getUserByLimit" parameterType="map" resultMap="User"> select * from user limit #{startIndex},#{pageSize} </select>
-
測試
@Test public void getUserByLimit(){ SqlSession sqlSession = MyBatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); HashMap<String,Integer> map = new HashMap<String,Integer>(); map.put("startIndex",1); map.put("pageSize",2); List<User> userList = mapper.getUserByLimit(map); for(User user : userList){ System.out.println(user); } sqlSession.clo se(); }
7.2、使用RowBounds分頁。
不再使用SQL實現分頁
-
介面
public List<User> getUserByRowBounds();
-
Mapper.xml
<select id="getUserByRowBounds"resultMap="UserMap"> select * from user </select>
-
測試
@Test public void getUserByRowBounds(){ SqlSession sqlSession = MyBatisUtils.getSqlSession(); RowBounds rowBounds = new RowBounds(1, 2); List<User> userList = sqlSession.selectList("com.dogeleft.dao.UserMapper.getUserByRowBounds", null, rowBounds); for (User user : userList) { System.out.println(user); } sqlSession.close(); }
7.3、分頁外掛
瞭解即可,萬一以後公司架構師,說要使用,你需要知道它是什麼東西!
8、使用註解開發
8.1、面向介面程式設計
大家之前都學過面向物件程式設計,也學習過介面,但在真正的開發中,很多時候我們會選擇面向介面程式設計。
**根本原因: **
解耦,可拓展,提高複用,分層開發中,上層不用管具體的實現,大家都遵守共同的標準,使得開發變得容易,規範性更好
在一個面向物件的系統中,系統的各種功能是由許許多多的不同物件協作完成的。在這種情況下,各個物件內部是如何實現自己的,對系統設計人員來講就不那麼重要了。
而各個物件之間的協作關係則成為系統設計的關鍵。小到不同類之間的通訊,大到各模組之間的互動,在系統設計之初都是要著重考慮的,這也是系統設計的主要工作內容。面向介面程式設計就是指按照這種思想來程式設計。
關於介面的理解
- 介面從更深層次的理解,應是定義(規範,約束)與實現(名實分離的原則)的分離
- 介面的本身反應了系統設計人員對系統的抽象理解。
- 介面應有兩類:
- 第一類是對一個個體的抽象,它可對應為一個抽象體(abstract class)
- 第二類是對一個個題某一方面的抽象,即形成一個抽象面(interface)
- 一個個體有可能有多個抽象面。抽象體與抽象面是有區別的
三個面向區別
- 面向物件是指,我們考慮問題時,以物件為單位,考慮它的屬性及方法。
- 面向過程是指,我們考慮問題時,以一個具體的流程(事務過程)為單位,考慮它的實現。
- 介面設計與非介面設計是針對複用技術而言的,與面向物件(過程)不是一個問題。更多的體現就是對系統整體的架構
8.2、使用註解開發
-
介面
@Select("select * from user") List<User> getUsers();
-
核心配置檔案新增對映到這個介面
<mappers> <mapper class="com.dogeleft.dao.UserMapper"/> </mappers>
-
測試
@Test public void getUsers(){ SqlSession sqlSession = MyBatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); for (User user : mapper.getUsers()) { System.out.println(user); } sqlSession.close(); }
本質:反射機制實現
底層:動態代理!
Mybatis詳細執行流程!
~
8.3、CRUD
我們可以在工具類建立的時候實現自動提交事務!
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);// 自動提交事務
}
寫介面及其註解
測試類
【注意我們必須要將介面註冊繫結到我們的核心配置檔案中】
關於@Param()註解
- 基本型別的引數或者String型別,需要加上
- 引用型別不需要加
- 如果只有一個基本型別,可以忽略,但是建議大家加上
- 我們在SQL中引用的就是我們這裡@Param()中設定的屬性名!
#{} ${}的區別,一個預編譯,一個可能造成拼接。
推薦使用#。
9、Lombok
什麼是?
- Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
- Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
@Getter and @Setter
@NonNull
@ToString
@EqualsAndHashCode
@Data
@Cleanup
@Synchronized
@SneakyThrows
說明:
@Data:無參構造、getter、setter
@Data:無參構造、getter、setter、toString、hashcode、equals
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@ToString
怎麼用?
-
在IDEA中安裝Lombok外掛!
Plugins-->查lombok
-
在專案匯入lombok的jar包
在maven中新增
-
在實體類中添加註解
如上
什麼時候用它?
就是個簡化了程式碼的外掛。如果團隊需要用到,再使用叭。