成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Mybatis初體驗

ingood / 2143人閱讀

摘要:概述是一款優(yōu)秀的基于的持久層框架,封裝代碼,實現(xiàn)將參數(shù)映射到語句并執(zhí)行,最后將執(zhí)行結果映射到對象并返回的功能,支持自定義存儲過程和高級映射。命名無要求,但應該有意義。創(chuàng)建實體和映射文件是映射框架,所以我們需要對應創(chuàng)建類,與數(shù)據(jù)庫表進行映射。

概述

Mybatis是一款優(yōu)秀的、基于SQL的持久層框架,封裝JDBC代碼,實現(xiàn)將參數(shù)映射到SQL語句并執(zhí)行,最后將執(zhí)行結果映射到JAVA對象并返回的功能,支持自定義SQL、存儲過程和高級映射。

本系列文章是基于Mybatis 3.4.6 版本。

創(chuàng)建項目

我們使用maven來構建和管理項目,使用的IDEA開發(fā)工具來學習,這些都是目前很優(yōu)秀的并且使用廣泛的工具,流暢的開發(fā)體驗便于提高開發(fā)效率,按如下步驟進行:

在IDEA中點擊【file】-->【New】-->【Project...】,打開New Project窗口向導,如下圖:

選擇Maven并勾選Create from archetype,最后選擇maven-archetype-quickstart,點擊【Next】,如下圖:

GroupId、ActifactId和Version是項目的maven坐標,作用就是便于在maven倉庫中查找項目以供其他項目使用。命名無要求,但應該有意義。點擊【Next】,如下圖:

以上界面是對新建項目的描述信息,點擊【Next】,如下圖:

注意此界面的Project Name,此處默認是上個界面定義的去掉"-"的ActifactId,此處可以加上"-",最終如下圖:

點擊【Finish】,最終的項目結構如下:

打開pom文件,添加相關依賴,代碼如下:



    org.mybatis
    mybatis
    3.4.6




    mysql
    mysql-connector-java
    5.1.38




    junit
    junit
    4.12
    test




    org.apache.logging.log4j
    log4j-api
    2.11.0


    org.apache.logging.log4j
    log4j-core
    2.11.0

至此,項目已經(jīng)創(chuàng)建完成,下一步開始編碼。

編碼實現(xiàn)

在開始編碼之前,需要先創(chuàng)建測試使用的表,mybatis本身是ORM框架,所以數(shù)據(jù)庫肯定少不了,我們使用的是mysql數(shù)據(jù)庫,可以使用一個已有數(shù)據(jù)庫或者新建一個新庫,在此基礎上新建表,如下:

CREATE TABLE `sys_user` (
  `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT "主鍵",
  `username` varchar(50) DEFAULT NULL COMMENT "用戶名",
  `password` varchar(50) DEFAULT NULL COMMENT "用戶密碼",
    `phone` varchar(20) DEFAULT NULL COMMENT "手機號",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT="用戶表";

創(chuàng)建完數(shù)據(jù)庫表后,我們插入一些測試數(shù)據(jù),如下:

insert into sys_user(username,password,phone) 
values ("zhangsan","123456","13901234567"),
       ("lishi","123456","13901234567"),
       ("wangwu","123456","13901234567");

準備好數(shù)據(jù)庫表和測試數(shù)據(jù)后,開始編寫代碼。

創(chuàng)建實體和映射文件

Mybatis是ORM映射框架,所以我們需要對應創(chuàng)建java類,與數(shù)據(jù)庫表進行映射。

在src/main/java下創(chuàng)建包:com.github.dalianghe.model,并在該包下創(chuàng)建數(shù)據(jù)庫sys_user表的映射類SysUser,代碼如下:

package com.github.daliang.model;

public class SysUser{
    private Long id;
    private String username;
    private String password;
    private String phone;

    // get/set

    // 重寫toString
    @Override
    public String toString() {
        return "User["+
                     "id="+this.getId()+"," +
                     "username="+this.getUsername()+
                     ",password="+this.getPassword()+
                     ",phone="+this.getPhone()
                  +"]";
    }
}

在src/mainresources下創(chuàng)建mappers目錄,并在其下創(chuàng)建SysUserMapper.xml文件,代碼如下:






    

說明:

< mapper>:XML根元素,屬性namespace定義了當前XML命名空間

< select>標簽:定義select查詢sql,id屬性定義當前select查詢的唯一ID,resultType定義查詢返回類型或集合元素類型(此處使用了配置別名,詳細見Mybatis配置文件,如果不使用別名,此處應該制定類的全限定名即:com.github.dalianghe.model.SysUser)。標簽內(nèi)容為要執(zhí)行的sql語句。

Mybatis配置文件

配置Mybatis有多種方法,本例使用XML方式進行配置,在classpass(src/main/resource)下創(chuàng)建mybatis-config.xml文件,并進行配置,代碼如下:




    
        
        
    
    
    
        
    
    
    
        
            
                
            
            
                
                
                
                
            
        
    
    
    
        
    

配置日志

本例使用log4j2框架進行日志輸出(所依賴的jar包已經(jīng)在pom文件中進行了配置),便于我們觀察Mybatis行為,在classpath下新建log4j2.xml文件,并進行配置,代碼如下:



    
        
            
        
    
    
        
            
        
    

編寫測試

以上代碼編寫完成,現(xiàn)在使用Juint編寫測試用例,代碼如下:

public class SysUserMapperTest {

    private static SqlSessionFactory sqlSessionFactory ;

    @BeforeClass
    public static void init(){
        try{
            //通過Resources工具類將mybatis配置文件讀入Reader
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            //通過SqlSessionFactoryBuilder構造類使用reader創(chuàng)建SqlSessionFactory對象
            //在創(chuàng)建SqlSessionFactory對象過程中,首先解析mybatis-config.xml配置文件,并讀取mappers標簽配置的Mapper.xml進行解析。
            //解析之后,SqlSessionFactory包括了所有屬性和要執(zhí)行的SQL
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            reader.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    @Test
    public void testSelectAll(){
        //獲取SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        try{
            //通過sqlSession的selectList方法查找到id為selectAll的方法執(zhí)行sql
            //執(zhí)行完后,mybatis將結果集映射為returnType類型并返回
            List userList = sqlSession.selectList("selectAll");
            printUserList(userList);
        }finally {
            //關閉資源
            sqlSession.close();
        }
    }

    private void printUserList(List users){
        for(SysUser user : users){
            System.out.println(user.toString());
        }
    }

}

運行測試方法testSelectAll,如無問題將打印如下內(nèi)容:

... ...
11:11:47.042 [main] DEBUG com.github.dalianghe.mapper.SysUserMapper.selectAll - ==>  Preparing: select id,username,password,phone from sys_user 
11:11:47.109 [main] DEBUG com.github.dalianghe.mapper.SysUserMapper.selectAll - ==> Parameters: 
11:11:47.130 [main] TRACE com.github.dalianghe.mapper.SysUserMapper.selectAll - <==    Columns: id, username, password, phone
11:11:47.130 [main] TRACE com.github.dalianghe.mapper.SysUserMapper.selectAll - <==        Row: 1, zhangsan, 123456, 13901234567
11:11:47.133 [main] TRACE com.github.dalianghe.mapper.SysUserMapper.selectAll - <==        Row: 2, lishi, 123456, 13901234567
11:11:47.133 [main] TRACE com.github.dalianghe.mapper.SysUserMapper.selectAll - <==        Row: 3, wangwu, 123456, 13901234567
11:11:47.133 [main] DEBUG com.github.dalianghe.mapper.SysUserMapper.selectAll - <==      Total: 3
User[id=1,username=zhangsan,password=123456,phone=13901234567]
User[id=2,username=lishi,password=123456,phone=13901234567]
User[id=3,username=wangwu,password=123456,phone=13901234567]
... ...
總結

本節(jié)是第一篇關于mybatis的學習,我們體驗了下mybatis的查詢功能,后續(xù)繼續(xù)學習更多更強大的功能,自己努力、大家努力。

最后創(chuàng)建了qq群方便大家交流,可掃描加入,同時也可加我qq:276420284,共同學習、共同進步,謝謝!

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/71205.html

相關文章

  • Mybatis體驗

    摘要:是支持普通查詢,存儲過程和高級映射的優(yōu)秀持久層框架。其中,標簽內(nèi)指定的是你定義的實體類的別名,方便之后使用。如果有問題會輸出相應的提示。結果根據(jù)配置,我們生成了三個文件。 MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數(shù)的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或注解用于配置和原始映射,將...

    flyer_dev 評論0 收藏0
  • [直播視頻] 《Java 微服務實踐 - Spring Boot 系列》限時折扣

    摘要:作為微服務的基礎設施之一,背靠強大的生態(tài)社區(qū),支撐技術體系。微服務實踐為系列講座,專題直播節(jié),時長高達小時,包括目前最流行技術,深入源碼分析,授人以漁的方式,幫助初學者深入淺出地掌握,為高階從業(yè)人員拋磚引玉。 簡介 目前業(yè)界最流行的微服務架構正在或者已被各種規(guī)模的互聯(lián)網(wǎng)公司廣泛接受和認可,業(yè)已成為互聯(lián)網(wǎng)開發(fā)人員必備技術。無論是互聯(lián)網(wǎng)、云計算還是大數(shù)據(jù),Java平臺已成為全棧的生態(tài)體系,...

    Enlightenment 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<