最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis入門介紹(超簡單)

 更新時間:2017年08月01日 10:04:46   投稿:mrr  
mybatis是Java的持久層框架, JAVA操作數(shù)據(jù)庫是通過jdbc來操作的,而mybatis是對jdbc的封裝。下文給大家介紹mybatis入門知識,感興趣的朋友參考下吧

MyBatis 簡介

MyBatis的前身叫iBatis,本是apache的一個開源項目, 2010年這個項目由apache software foundation 遷移到了google code,并且改名為MyBatis。MyBatis是支持普通SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJOs(Plan Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。

首先介紹一下Mybatis是什么?mybatis是Java的持久層框架, JAVA操作數(shù)據(jù)庫是通過jdbc來操作的,而mybatis是對jdbc的封裝。

  使用mybatis之后,開發(fā)者只需要關(guān)注sql語句本身,而不必花時間去注冊驅(qū)動、創(chuàng)建connection、statement、手動設(shè)置參數(shù),結(jié)果集檢索等jdbc繁瑣的代碼。

  mybatis基本過程:Mybatis通過xml或注解的方式將要執(zhí)行的各種statement(statement、preparedStatemnt、CallableStatement)配置起來,并通過java對象和statement中的sql進(jìn)行映射生成最終執(zhí)行的sql語句,最后由mybatis框架執(zhí)行sql并將結(jié)果映射成java對象并返回。

  下面通過一個根據(jù)用戶id查詢用戶信息來學(xué)習(xí)mybatis:

     先介紹一下mybatis的兩種主要的配置文件:

        SqlMapConfig.xml(mybatis全局配置文件,名稱不固定,用來配置運(yùn)行環(huán)境(數(shù)據(jù)源、事務(wù))

        類名+mapper.xml 主要用來配置sql語句

  一、首先我們需要在mybatis的全局配置文件(SqlMapConfig.xml)中配置jdbc連接池,和加載mapper.xml.

當(dāng)系統(tǒng)啟動時,會加載這個全局配置文件,然后通過全局配置文件加載到mapper.xml文件。mapper.xml文件中配置了sql語句。

  二、編寫SqlSessionFactory。mybatis的核心就是這個SqlSessionFactory。通過這個SqlSessionFactory將配置文件以參數(shù)的形式傳入之后,創(chuàng)建了一個會話。

然后通過sqlsession來操作數(shù)據(jù)庫,進(jìn)行增刪改查。

  下面來對第一步和第二步分別做個細(xì)致的分析。首先貼上代碼:

sqlMapperConfig.xml

<environments default="development">
    <environment id="development">
    <!-- 使用jdbc事務(wù)管理-->
      <transactionManager type="JDBC" />
    <!-- 數(shù)據(jù)庫連接池-->
      <dataSource type="POOLED">
        <property name="driver" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <!-- 通過resource引用mapper的映射文件 -->
    <mapper resource="sqlmap/User.xml" />
  </mappers>

 通過這個配置文件可以看出總的配置文件是配置一些主要信息和加載別的配置文件。當(dāng)mybatis和Spring整合之后,environment就會被廢除。同時,這種全局配置文件只會有一個。而 "表名+mapper.xml"這種配置文件則會有很多。

下面來分析 "表名+mapper.xml"

<!-- namespace命名空間,為了對sql語句進(jìn)行隔離,方便管理 ,mapper開發(fā)dao方式,使用namespace有特殊作用
mapper代理開發(fā)時將namespace指定為mapper接口的全限定名
 -->
<mapper namespace="test">
<!-- 在mapper.xml文件中配置很多的sql語句,執(zhí)行每個sql語句時,封裝為MappedStatement對象
mapper.xml以statement為單位管理sql語句
 -->
  <!-- 根據(jù)id查詢用戶信息 -->
  <!-- 
    id:唯一標(biāo)識 一個statement
    #{}:表示 一個占位符,如果#{}中傳入簡單類型的參數(shù),#{}中的名稱隨意
    parameterType:輸入 參數(shù)的類型,通過#{}接收parameterType輸入 的參數(shù)
    resultType:輸出結(jié)果 類型,不管返回是多條還是單條,指定單條記錄映射的pojo類型
   -->
  <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">
    SELECT * FROM USER WHERE id= #{id}
  </select>

    從代碼中可以看出這個配置文件是用來配置sql語句的。但是應(yīng)當(dāng)注意,最上面的namespace的注釋,namespace命名空間,為了對sql語句進(jìn)行隔離,方便管理 ,mapper開發(fā)dao方式,使用namespace有特殊作用,mapper代理開發(fā)時將namespace指定為mapper接口的全限定名。

在后面的SQLSessionFactory類中就能看出其作用了。

  這個配置文件中的每個sql語句,其實都是jdbc中的statement,這樣的話,其實mybatis內(nèi)部也是在操作statement。

  這里的<select>標(biāo)簽里面?zhèn)鲄⒂玫降氖?{},而我們要用模糊查詢的時候是不能用這個直接加上%的。

  但是有一種方法就是 使用${}接收參數(shù)!如下:

<!-- 根據(jù)用戶名稱查詢用戶信息,可能返回多條
  ${}:表示sql的拼接,通過${}接收參數(shù),將參數(shù)的內(nèi)容不加任何修飾拼接在sql中。
   -->
  <select id="findUserByName" parameterType="java.lang.String" resultType="cn.itcast.mybatis.po.User">
    select * from user where username like '%${value}%'
  </select>

但是上面這種方法是不加任何修飾的拼接在sql中的,也就是不能防止sql注入,所以這種方法也不能應(yīng)用到實際項目中!

所以,我在百度上搜到了另一種方式來進(jìn)行模糊查詢,不知道有沒有什么bug,但是我測試是可以用的。

<!-- 根據(jù)用戶名模糊查詢查詢出員工的信息 -->
  <select id="search" resultType="Employee">
    SELECT 
      <include refid="allColumns"/>
    FROM employee a where a.name like concat(concat('%',#{name}),'%')
  </select>

下面來看看sqlsessionFactory會話工廠的代碼:

public class MybatisFirst {
  // 會話工廠
  private SqlSessionFactory sqlSessionFactory;
  // 創(chuàng)建工廠
  @Before
  public void init() throws IOException {
    // 配置文件(SqlMapConfig.xml)
    String resource = "SqlMapConfig.xml";
    // 加載配置文件到輸入 流
    InputStream inputStream = Resources.getResourceAsStream(resource);
    // 創(chuàng)建會話工廠
    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  }
  // 測試根據(jù)id查詢用戶(得到單條記錄)
  @Test
  public void testFindUserById() {
    // 通過sqlSessionFactory創(chuàng)建sqlSession
    SqlSession sqlSession = sqlSessionFactory.openSession();
    // 通過sqlSession操作數(shù)據(jù)庫
    // 第一個參數(shù):statement的位置,等于namespace+statement的id
    // 第二個參數(shù):傳入的參數(shù)
    User user = null;
    try {
      user = sqlSession.selectOne("test.findUserById", 2);
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      // 關(guān)閉sqlSession
      sqlSession.close();
    }
    System.out.println(user);
  }

會話工廠的代碼很簡單,就是:家在配置文件、創(chuàng)建會話工廠、通過會話操作數(shù)據(jù)庫、關(guān)閉會話:

但是請注意第35行的參數(shù)。就是我們前面提到的namespace的test,是為了隔離sql而寫的,這里體現(xiàn)的它的作用!

還有就是selectOne這兩個參數(shù)各自的意義:第一個參數(shù)就是我們所說的“表名+mappe.xml”中定義的sql語句,其實就是一個statement.第二個參數(shù)就是sql語句需要傳入的參數(shù),也就是id

總結(jié)

以上所述是小編給大家介紹的MyBatis入門介紹,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)雙向鏈表功能

    java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)雙向鏈表功能

    這篇文章主要為大家詳細(xì)介紹了java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)雙向鏈表功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java獲取上月份最后一天日期8位的示例代碼

    Java獲取上月份最后一天日期8位的示例代碼

    這篇文章主要介紹了Java獲取上月份最后一天日期8位,需要的朋友可以參考下
    2022-09-09
  • java如何讀取properties文件將參數(shù)值配置到靜態(tài)變量

    java如何讀取properties文件將參數(shù)值配置到靜態(tài)變量

    這篇文章主要介紹了java如何讀取properties文件將參數(shù)值配置到靜態(tài)變量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • java動態(tài)規(guī)劃算法——硬幣找零問題實例分析

    java動態(tài)規(guī)劃算法——硬幣找零問題實例分析

    這篇文章主要介紹了java動態(tài)規(guī)劃算法——硬幣找零問題,結(jié)合實例形式分析了java動態(tài)規(guī)劃算法——硬幣找零問題相關(guān)原理、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下
    2020-05-05
  • Java中的Lombok使用詳解

    Java中的Lombok使用詳解

    這篇文章主要介紹了Java中的Lombok使用詳解,Lombok是一個在Java開發(fā)過程中使用注解的方式,用于簡化JavaBean的編寫,避免冗余和樣板式代碼的插入,使類的編寫更加簡潔,需要的朋友可以參考下
    2023-08-08
  • springboot tomcat最大線程數(shù)與最大連接數(shù)解析

    springboot tomcat最大線程數(shù)與最大連接數(shù)解析

    這篇文章主要介紹了springboot tomcat最大線程數(shù)與最大連接數(shù)解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring Data JPA例子代碼[基于Spring Boot、Mysql]

    Spring Data JPA例子代碼[基于Spring Boot、Mysql]

    這篇文章主要介紹了Spring Data JPA例子代碼[基于Spring Boot、Mysql],小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • SpringBoot使用Filters實現(xiàn)請求過濾和預(yù)處理

    SpringBoot使用Filters實現(xiàn)請求過濾和預(yù)處理

    過濾器(Filter)是一種在Web應(yīng)用中用于攔截和處理HTTP請求和響應(yīng)的對象,在Java Web開發(fā)中,過濾器是實現(xiàn)特定功能,如認(rèn)證、日志記錄和字符編碼處理的重要工具,本文主要介紹了SpringBoot使用Filters實現(xiàn)請求過濾和預(yù)處理,需要的朋友可以參考下
    2024-08-08
  • SpringBoot框架底層原理解析

    SpringBoot框架底層原理解析

    這篇文章主要介紹了SpringBoot底層原理,包括配置優(yōu)先級的配置方式給大家講解的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Maven install 報錯

    Maven install 報錯"程序包不存在"問題的解決方法

    這篇文章主要介紹了Maven install 報錯"程序包不存在"問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論

镇原县| 扬州市| 连城县| 丰顺县| 南昌市| 建阳市| 镇沅| 全州县| 阿克苏市| 枣阳市| 松潘县| 浙江省| 建瓯市| 新野县| 达日县| 乌鲁木齐市| 汉沽区| 衡山县| 郓城县| 大方县| 黑水县| 长岭县| 高清| 平陆县| 清苑县| 白沙| 法库县| 深州市| 玉门市| 五峰| 永清县| 日喀则市| 黄平县| 马山县| 乌拉特中旗| 南漳县| 施秉县| 江达县| 聊城市| 黄陵县| 阜阳市|