成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Mybatis初體驗(yàn)

ingood / 2174人閱讀

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

概述

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

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

創(chuàng)建項(xiàng)目

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

在IDEA中點(diǎn)擊【file】-->【New】-->【Project...】,打開New Project窗口向?qū)?,如下圖:

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

GroupId、ActifactId和Version是項(xiàng)目的maven坐標(biāo),作用就是便于在maven倉(cāng)庫(kù)中查找項(xiàng)目以供其他項(xiàng)目使用。命名無要求,但應(yīng)該有意義。點(diǎn)擊【Next】,如下圖:

以上界面是對(duì)新建項(xiàng)目的描述信息,點(diǎn)擊【Next】,如下圖:

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

點(diǎn)擊【Finish】,最終的項(xiàng)目結(jié)構(gòu)如下:

打開pom文件,添加相關(guān)依賴,代碼如下:



    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

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

編碼實(shí)現(xiàn)

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

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 "手機(jī)號(hào)",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT="用戶表";

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

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

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

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

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

在src/main/java下創(chuàng)建包:com.github.dalianghe.model,并在該包下創(chuàng)建數(shù)據(jù)庫(kù)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定義了當(dāng)前XML命名空間

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

Mybatis配置文件

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




    
        
        
    
    
    
        
    
    
    
        
            
                
            
            
                
                
                
                
            
        
    
    
    
        
    

配置日志

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



    
        
            
        
    
    
        
            
        
    

編寫測(cè)試

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

public class SysUserMapperTest {

    private static SqlSessionFactory sqlSessionFactory ;

    @BeforeClass
    public static void init(){
        try{
            //通過Resources工具類將mybatis配置文件讀入Reader
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            //通過SqlSessionFactoryBuilder構(gòu)造類使用reader創(chuàng)建SqlSessionFactory對(duì)象
            //在創(chuàng)建SqlSessionFactory對(duì)象過程中,首先解析mybatis-config.xml配置文件,并讀取mappers標(biāo)簽配置的Mapper.xml進(jìn)行解析。
            //解析之后,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將結(jié)果集映射為returnType類型并返回
            List userList = sqlSession.selectList("selectAll");
            printUserList(userList);
        }finally {
            //關(guān)閉資源
            sqlSession.close();
        }
    }

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

}

運(yùn)行測(cè)試方法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é)

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/71205.html

相關(guān)文章

  • Mybatis體驗(yàn)

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

    flyer_dev 評(píng)論0 收藏0
  • [直播視頻] 《Java 微服務(wù)實(shí)踐 - Spring Boot 系列》限時(shí)折扣

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

    Enlightenment 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<