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相似。

image-20200517090058269

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();
        
    }

輸出結果

image-20200517090333835

pageHelper分頁插件

了解

註解開發

本質是使用反射,還有動態代理模式

在工具類MybatisUtils中,打開自動提交事務,這樣在後續的編寫程式碼中就不要在使用commit。

image-20200517150310456

//    有了工廠就可以獲得實例來使用,sqlsession就可以面向資料庫操作jdbc
//    打開自動提交事務
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);
    }

註解開發流程-實例

整體文件結構

image-20200517195217954

使用註解開發的時候,介面裡面定義的方法就是使用註解的地方,實例如下

//使用註解的方法,之前是需要寫xml文件進行配置,這裡就直接使用註解的方法
//這個方法是查詢所有用戶資訊
@Select("select * from user")
List<User> getUsers();

在主配置文件中,也是關鍵所在,綁定的有所不同。將文件資源標籤改為class,並將所在的類位置標出。

image-20200517200001711

測試類-使用的步驟和之前的沒有使用註解的方法一樣。

@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裡面的插件

image-20200518102201415

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

image-20200518103524190

我選擇了最新的版本,有錯再去解決

<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)

將變數定義留著,其他方法注釋掉,就可以自動生成了

image-20200518104820601

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

image-20200518105023599

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

image-20200518105157269

最後

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