大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 實現MyBatis的分頁

實現MyBatis的分頁

更新時間:2021-12-20 09:46:47 來源:動力節點 瀏覽865次

分頁的實現

sql的分頁語句為(第一個參數是當前頁面的索引起始位置,第二個參數是顯示的頁數)

select  *  from  user  limit  #{startIndex},#{pageSize};
# startIndex: 起始位置,默認為 0 
# pageSize: 頁面大小
# 如何計算當前頁面索引的起始位置
# currentPage = (currentPage-1)* pageSize  

limit 實現分頁

編寫dao接口

//查詢所有用戶實現分頁
List < User >  selectUserByLimit ( Map < String , Integer > map ) ;

編譯mapper映射文件的方法(可以通過map封裝參數,方便參數傳遞)

< select  id = " selectUserByLimit "  parameterType = " Map "  resultType = " User " >
    select * from mybatis.user limit #{startIndex},#{pageSize}
</選擇>

創建了用于獲取 sqlSession 對象的工具類,并使自動提交事務成為可能。

包裝融為一體。MLXH 。實用程序;
進口組織。阿帕奇。伊比斯。約。資源;
進口組織。阿帕奇。伊比斯。會話。SqlSession ; 
進口組織。阿帕奇。伊比斯。會話。SqlSessionFactory ; 
進口組織。阿帕奇。伊比斯。會話。SqlSessionFactoryBuilder ;
導入java 。約。IO異常;
導入java 。約。輸入流;
//mybatis工具類,重復代碼的凈化
public  class  MyBatisUtils  {
    //類變量不需要設置默認值;
    私有 靜態SqlSessionFactory sqlSessionFactory ;
    static  { 
        //在maven中,所有的資源文件一般都放在resources目錄下,我們可以直接獲取。
        嘗試 {
            字符串資源=  "mybatis-config.xml" ; 
            InputStream inputStream =資源。getResourceAsStream (資源);
            sqlSessionFactory =  new  SqlSessionFactoryBuilder ( ) 。構建(的inputStream ); 
        }  catch  ( IOException e )  { 
            e. 打印堆棧跟蹤();
        } 
    } 
    //設置SqlSessionFactory的方法 public 
    public  static SqlSessionFactory getSqlSessionFactory ( ) { 
        return sqlSessionFactory ; 
    } 
    //帶有事務自動提交功能的通用SqlSession方法
    public  static SqlSession getSqlSession ( ) { 
        //自動提交事務
        return sqlSessionFactory . openSession (真) ; 
    } 
}

測試(模擬分頁數據參數:當前Page,page Size)

@Test 
public  void  selectUserByLimit ( ) {
    //創建sqlSession 
    SqlSessionFactory sqlSessionFactory = MyBatisUtils . getSqlSessionFactory ( ) ; 
    SqlSession sqlSession = sqlSessionFactory 。openSession ( ) ;
    //準備數據
    int currentPage =  2 ; //當前頁面是什么?
    int pageSize =  2 ;  //頁面大小
    Map < String , Integer > map =  new  HashMap < String , Integer > ( ) ; 
    地圖。put ( "startIndex" , ( currentPage - 1 ) * pageSize ) ; 
    地圖。put ( "pageSize" , pageSize ) ;
    //測試
    UserDao 映射器= sqlSession . getMapper ( userDAO的。類); 
    列表<用戶>用戶=映射器。selectUserByLimit (地圖) ;
    for  (用戶用戶:用戶) {
        系統。出來。打印(用戶);
    }
    sqlSession 。關閉( ) ; //關閉連接
}

按 RowBounds 分頁

1.寫接口

//查詢所有用戶使用RowBounds 
List < User >  selectUserByRowBounds ( )實現分頁;

2.編寫Mapper映射文件

< select  id = " selectUserByRowBounds "  resultType = " User " >
    從 mybatis.user 中選擇 *
</選擇>

3.工具類同上(只是獲取sqlSession對象很簡單)

4.編寫測試代碼

@Test 
public  void  selectUserByRowBounds ( ) { 
    //創建sqlSession 
    SqlSessionFactory sqlSessionFactory = MyBatisUtils . getSqlSessionFactory ( ) ; 
    SqlSession sqlSession = sqlSessionFactory 。openSession ( ) ;
    int currentPage =  2 ;  //當前頁面
    int pageSize =  2 ;  //頁面大小
    RowBounds rowBounds =  new  RowBounds ( ( currentPage -  1 )  * pageSize , pageSize ) ;
    //注意getMapper不能和RowBounds
    一起
    使用//selectList: Receive a List //Select Map: Receive a Map 
    //selectOne: 當只接收一個對象
    List < User > users = sqlSession . selectList ( "com.MLXH.dao.UserDao.selectUserByRowBounds" , null , rowBounds ) ; 
    for  (用戶用戶:用戶) {
        系統。出來。打印(用戶);
    } 
}

兩者的區別

rowBounds 的本質是封裝limit。

limit在SQL層面實現分頁,使用getMapper獲取測試中的對象

RowBounds 在代碼層面實現分頁,創建 rowBounds 對象

注釋開發

增刪改查示例(詳細代碼和目錄布局)可以看到對于UserDao接口,我們需要創建一個userMapper.xml來實現該接口并在其中寫入sql語句。

接下來,我們使用注解來簡化它們的代碼操作。

包裝融為一體。MLXH 。道;
進口玉米。MLXH 。波喬。用戶;
進口組織。阿帕奇。伊比斯。注釋。* ;
導入java 。UTIL 。列表;
公共 接口 UserDao  {
    //查詢所有用戶
    @Select ( "select * from user" ) 
    List < User >  getUserList ( ) ;
    //通過ID查詢用戶
    @Select ( "select * from user where id = #{id}" ) 
    User getUserById ( @Param ( "id" )  int id ) ;
    //添加用戶
    @Insert ( "insert into user(id,name,pwd) values (#{id},#{name},#{pwd})" ) 
    int  addUser ( User user ) ;
    //修改用戶信息
    @Update ( "update user set name = #{name}, pwd = #{pwd} where id = #{id}" ) 
    int  updateUser ( User user ) ;
    //刪除用戶
    @Delete ( "delete from user where id =#{uid}" ) 
    int  deleteUser ( @Param ( "uid" )  int id ) ;
}

用戶道

包裝融為一體。MLXH 。道;
進口玉米。MLXH 。波喬。用戶;
進口組織。阿帕奇。伊比斯。注釋。* ;
導入java 。UTIL 。列表;
公共 接口 UserDao  {
    //查詢所有用戶
    @Select ( "select * from user" ) 
    List < User >  getUserList ( ) ;
    //通過ID查詢用戶
    @Select ( "select * from user where id = #{id}" ) 
    User getUserById ( @Param ( "id" )  int id ) ;
    //添加用戶
    @Insert ( "insert into user(id,name,pwd) values (#{id},#{name},#{pwd})" ) 
    int  addUser ( User user ) ;
    //修改用戶信息
    @Update ( "update user set name = #{name}, pwd = #{pwd} where id = #{id}" ) 
    int  updateUser ( User user ) ;
    //刪除用戶
    @Delete ( "delete from user where id =#{uid}" ) 
    int  deleteUser ( @Param ( "uid" )  int id ) ;
}

@Param 是一個參數注解。輸入參數為1時,默認為Param,但輸入參數多于1時,在每個參數前加上@Param,標識為參數。

例如: int update(@Param("id") int id,@Param("name") String name,@Param("pwd") String pwd)

Mybatis 核心簡介

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE 配置
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        《http://mybatis.org/dtd/mybatis-3-config.dtd"> 
<配置>
    <!--配置文件修改--> 
    < properties  resource = " database.properties " />
    <!--Mybatis 設置--> 
    < settings >
         <!--默認日志實現--> 
        <!--<setting name="logImpl" value="STDOUT_LOGGING"/>-->
        <!--Log4j實現--> 
        <設置 名稱= " logImpl " 值= " LOG4J " /> 
    </設置>
    <!--配置別名--> 
    < typeAliases >
         <!--<typeAlias type="com.MLXH.pojo.User" alias="User"/>--> 
        <包 名= " com.MLXH.pojo " /> 
    </ 類型別名>
    <環境 默認= “開發” > 
        <環境 id = “開發” > 
            <事務管理器 類型= “ JDBC ” /> 
            <數據源 類型= “ POOLED ” > 
                <屬性 名稱= “驅動程序” 值= “ ${driver} ” /> 
                <屬性 名稱= " url " value = " ${url} " /> 
                < property  name = " username "  value = " ${username} " /> 
                < property  name = " password "  value = " ${password} " /> 
            </ dataSource > 
        </環境> 
    </環境>
    < mappers >
         <!--class 對應一個接口類-->
        <!--resource 一個接口類對應的映射文件-->
         < mapper  class = " com.MLXH.dao.UserDao " /> 
    </ mappers >
</配置>

這里我們將sqlSession對象的創建封裝為一個工具方法,設置事務自動提交(sqlSession Factory.openSession(true))

工具類

包裝融為一體。MLXH 。實用程序;
進口組織。阿帕奇。伊比斯。約。資源;
進口組織。阿帕奇。伊比斯。會話。SqlSession ; 
進口組織。阿帕奇。伊比斯。會話。SqlSessionFactory ; 
進口組織。阿帕奇。伊比斯。會話。SqlSessionFactoryBuilder ; 
導入java 。約。IO異常;
導入java 。約。輸入流;
//mybatis工具類,重復代碼的凈化
public  class  MyBatisUtils  { 
    //類變量不需要設置默認值;
    私有 靜態SqlSessionFactory sqlSessionFactory ;
    static  { 
        //在maven中,所有的資源文件一般都放在resources目錄下,我們可以直接獲取。
        嘗試 {
            字符串資源=  "mybatis-config.xml" ; 
            InputStream inputStream =資源。getResourceAsStream (資源);
            sqlSessionFactory =  new  SqlSessionFactoryBuilder ( ) 。構建(的inputStream ); 
        }  catch  ( IOException e )  { 
            e . 打印堆棧跟蹤();
        } 
    } 
    //設置SqlSessionFactory的方法 public 
    public  static SqlSessionFactory getSqlSessionFactory ( ) { 
        return sqlSessionFactory ;
    } 
    //帶有事務自動提交功能的通用SqlSession方法
    public  static SqlSession getSqlSession ( ) { 
        //自動提交事務
        return sqlSessionFactory . openSession (真) ; 
    } 
}

測試

包裝融為一體。MLXH 。道;
進口玉米。MLXH 。波喬。用戶;
進口玉米。MLXH 。實用程序。MyBatisUtils ; 
進口組織。阿帕奇。伊比斯。會話。SqlSession ; 
進口組織。JUnit的。測試;
進口太陽。rmi . 服務器。單播服務器引用;
導入java 。UTIL 。列表;
公共 類 UserDaoTest  {
    @Test 
    public  void  getUserList ( ) { 
        SqlSession sqlSession = MyBatisUtils . getSqlSession ( ) ; //帶自動提交事務
        UserDao mapper = sqlSession . getMapper ( userDAO的。類); 
        列表<用戶> userList = mapper 。獲取用戶列表( ) ; 
        對于 (用戶用戶: userList ) {
            系統。出來。打印(用戶);
        } 
        SQLSESSION 。關閉( ) ; //關閉sqlSession; 
    }
    @Test 
    public  void  getUserById ( ) { 
        SqlSession sqlSession = MyBatisUtils . getSqlSession ( ) ; //帶自動提交事務
        UserDao mapper = sqlSession . getMapper ( userDAO的。類); 
        用戶 user = mapper 。getUserById ( 1 ) ; 
        系統。出來。打印(用戶);
        sqlSession 。關閉( ) ; //關閉sqlSession;
    }   
    @Test 
    public  void  addUser ( ) { 
        SqlSession sqlSession = MyBatisUtils . getSqlSession ( ) ; //帶自動提交事務
        UserDao mapper = sqlSession . getMapper ( userDAO的。類); 
        用戶用戶= 新 用戶(5 , “冷雪” , “寒雪” ); 
        int i =映射器。添加用戶(用戶);
        系統。出來。打印(我);
        sqlSession 。關閉( ) ; //關閉sqlSession; 
    }
    @Test 
    public  void  updateUser ( ) { 
        SqlSession sqlSession = MyBatisUtils . getSqlSession ( ) ; //帶自動提交事務
        UserDao mapper = sqlSession . getMapper ( userDAO的。類); 
        User user =  new  User ( 5 ,  "暮光之城" ,  "木靈寒雪" ) ; 
        int i =映射器。更新用戶(用戶);
        系統。出來。打印(我);
        sqlSession 。關閉( ) ; //關閉sqlSession; 
    }
    @Test 
    public  void  deleteUser ( ) { 
        SqlSession sqlSession = MyBatisUtils . getSqlSession ( ) ; //帶自動提交事務
        UserDao mapper = sqlSession . getMapper ( userDAO的。類); 
        int i =映射器。刪除用戶(5 );
        系統。出來。打印(我);
        sqlSession 。關閉( ) ; //關閉sqlSession; 
    } 
}

總結:如你所見,注解開發其實就是封裝接口的mapper文件,在接口方法中加入sql語句。如果您對此比較感興趣,想了解更多相關知識,可以關注一下動力節點的MyBatis視頻教程,教程內容通俗易懂,適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产羞羞视频 | 最新国产在线视频 | freesex寂寞老妇hd | 欧美又黄又嫩大片a级 | 99热在线获取最新地址 | 婷婷综合国产激情在线 | 伊人久久亚洲综合天堂 | 精品国产福利久久久 | 色综合久久久久综合99 | 国内精品自在自线视频香蕉 | 国产欧美中文字幕 | 色悠久久综合 | 欧美午夜大片 | 久久中文网中文字幕 | 久久国产精品久久久久久久久久 | 日韩免费一级毛片 | 日韩一区国产二区欧美三区 | 日本黄色录象 | 日本一级毛片视频无遮挡免费 | 999毛片免费 | 天天插天天操 | 操操操干干 | 日韩中文字幕在线免费观看 | 中文字幕亚洲一区二区va在线 | 国产欧美日韩精品a在线观看高清 | 久射网| 亚洲整片| 精品一区二区三区视频在线观看免 | 2021久久伊人精品中文字幕有 | 亚洲免费不卡 | 四虎在线网站 | 毛片毛片毛片毛片毛片毛片毛片 | 99热这里只有精品首页精品 | 夜夜躁狠狠躁日日躁视频 | 女人18毛片a级毛片免费看一 | 亚洲欧美中日韩中文字幕 | 精品热久国产福利视频 | 日韩不卡免费视频 | 一级免费视频 | 欧美 日韩 中文 | 精品国产欧美 |