欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用MyBatis進(jìn)行數(shù)據(jù)庫(kù)映射的方式

 更新時(shí)間:2018年10月18日 09:06:55   投稿:mrr  
這篇文章主要介紹了使用MyBatis進(jìn)行數(shù)據(jù)庫(kù)映射的方式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在Java中,MyBatis是1個(gè)支持自定義SQL的持久層框架,它可以存儲(chǔ)過程和高級(jí)的映射。

在正式介紹之前,我們首先通過mvn進(jìn)行安裝,我們將下面的內(nèi)容添加到 pom.xml 配置文件中:

<dependency>
 <groupId>org.mybatis</groupId>
 <artifactId>mybatis</artifactId>
 <version>3.4.5</version>
</dependency>

上述操作完成后,我們首先新建1個(gè)MyBatis的配置文件,使用XML的格式進(jìn)行編寫:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
 <properties resource="db.properties"></properties>
 <environments default="my-config">
   <environment id="my-config">
    <transactionManager type="JDBC" />
    <dataSource type="POOLED">
     <property name="driver" value="${driver}"></property>
     <property name="url" value="${url}"></property>
     <property name="username" value="${user}"></property>
     <property name="password" value="${pwd}"></property>
    </dataSource>
   </environment>
 </environments>
 <mappers>
  <mapper resource="mapping.xml" />
 </mappers>
</configuration>

我們將上述的內(nèi)容寫入到 config.xml 文件中。其中environments是配置的環(huán)境,其中的environment用于對(duì)應(yīng)的環(huán)境的配置。這里,我們默認(rèn)使用的環(huán)境是 my-config ,其使用JDBC的方式進(jìn)行連接,數(shù)據(jù)源的方式為連接池。其中,數(shù)據(jù)源可以使用:

  • UNPOOLED,每次請(qǐng)求時(shí)打開和關(guān)閉連接
  • POOLED,連接池
  • JNDI,主要用于EJB或應(yīng)用服務(wù)器中使用

而環(huán)境通過對(duì) db.properties 中的內(nèi)容進(jìn)行配置,其內(nèi)容如下:

url=jdbc:oracle:thin:@xxx.xxx.xxx.xx:1521/orcl
user=xxx
pwd=xxx
driver=oracle.jdbc.driver.OracleDriver

更多關(guān)于MyBatis的配置,可以 參考 。其中包括別名、類型處理器typeHandler的說明,這里就不一一敘述了。

最后,我們還設(shè)置了1個(gè)匹配的資源,其支持4種方式:

resource,使用相對(duì)于類路徑的資源引用

url,使用完全限定資源定位符

class,使用映射器接口實(shí)現(xiàn)類的完全限定類名

name,將包內(nèi)的映射器接口實(shí)現(xiàn)全部注冊(cè)為映射器

在這里我們使用resource的方式指定匹配的文件的名稱。其內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper PUBLIC  
  "-//mybatis.org//DTD Mapper 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="user">
  <select id="es_temp" fetchSize="10" resultType="java.util.LinkedHashMap">
   select ENTNAME,UNISCID,INDUSTRY,REGION,OPSTATE,ESTYEAR,SCALE from xxx where rownum <![CDATA[<=]]> 20
  </select>
</mapper>

由于在XML中,括號(hào)具有單獨(dú)的意義,因此如果我們使用尖括號(hào)會(huì)出現(xiàn)解析錯(cuò)誤,此時(shí)我們可以使用HTML實(shí)體轉(zhuǎn)義編碼,如 &lt; 來進(jìn)行處理,或者直接使用 <![CDATA[xxxx]]> 進(jìn)行實(shí)際符號(hào)的處理。

我們通過mapper標(biāo)簽中的namespace定義了映射的命名空間,其中的id用于對(duì)應(yīng)語(yǔ)句的匹配,方便進(jìn)行命名解析。

接著是對(duì)應(yīng)的Java代碼的編寫:

import java.io.Reader;
import java.util.*;
import com.alibaba.fastjson.*;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.*;
public class Demo {
  public static SqlSessionFactory sessionFactory;
  public static void main(String[] args) {
    try {
      Reader reader = Resources.getResourceAsReader("config.xml");
      sessionFactory = new SqlSessionFactoryBuilder().build(reader);
      SqlSession session = sessionFactory.openSession();
      List<LinkedHashMap<?,?>> result = session.selectList("user.es_temp");
      String json_str = JSON.toJSONString(result);
      System.out.println(json_str);
      session.close();
    } catch (Exception e){
      e.printStackTrace();
    }
  }
}

在這里,我們通過Resources類對(duì)配置文件進(jìn)行讀取,然后構(gòu)建1個(gè)SqlSessionFactory,之后通過其openSession得到1個(gè)Session對(duì)象,這樣我們就可以進(jìn)行對(duì)應(yīng)的SQL操作了。

我們使用selectList函數(shù)進(jìn)行對(duì)應(yīng)SQL的執(zhí)行,其使用的是 命名空間.id 的方式來進(jìn)行對(duì)應(yīng)的操作。另外,還有1個(gè)selectOne函數(shù)用于單個(gè)記錄的查詢,對(duì)于多個(gè)結(jié)果會(huì)直接返回異常。

其結(jié)果為:

[
  {
    "ENTNAME":"深圳市藍(lán)海匯裝飾設(shè)計(jì)工程有限公司",
    "UNISCID":"91440300359236108Q",
    "INDUSTRY":"批發(fā)和零售業(yè)",
    "REGION":"深圳",
    "OPSTATE":"存續(xù)(在營(yíng)、開業(yè)、在冊(cè))",
    "ESTYEAR":"3年以下",
    "SCALE":"小微企業(yè)"
  },
  {
    "ENTNAME":"暴風(fēng)雨(深圳)電子商務(wù)有限公司",
    "UNISCID":"91440300MA5DF887XE",
    "INDUSTRY":"批發(fā)和零售業(yè)",
    "REGION":"深圳",
    "OPSTATE":"存續(xù)(在營(yíng)、開業(yè)、在冊(cè))",
    "ESTYEAR":"3年以下",
    "SCALE":"小微企業(yè)"
  },
  ...
]

可以看到,通過上述的方式,我們可以很容易的實(shí)現(xiàn)代碼與SQL語(yǔ)句的分離。但是,對(duì)應(yīng)的SQL語(yǔ)句依賴于數(shù)據(jù)庫(kù),可移植性差。另外,對(duì)于字段多、關(guān)聯(lián)表多時(shí),編寫SQL語(yǔ)句的工作量很大。

總結(jié)

以上所述是小編給大家介紹的使用MyBatis進(jìn)行數(shù)據(jù)庫(kù)映射,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 深入Java對(duì)象的地址的使用分析

    深入Java對(duì)象的地址的使用分析

    本篇文章介紹了,Java對(duì)象的地址的使用分析。需要的朋友參考下
    2013-05-05
  • Java實(shí)現(xiàn)學(xué)生管理系統(tǒng)詳解

    Java實(shí)現(xiàn)學(xué)生管理系統(tǒng)詳解

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)學(xué)生管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-10-10
  • SpringBoot 使用 Maven 打包方式

    SpringBoot 使用 Maven 打包方式

    maven打包有三種方式 pom、jar、war,本篇文章給大家介紹SpringBoot 使用 Maven 打包方式,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Java集合中的Set之LinkedHashSet詳解

    Java集合中的Set之LinkedHashSet詳解

    這篇文章主要介紹了Java集合中的Set之LinkedHashSet詳解,LinkedHashSet是Set集合的一個(gè)實(shí)現(xiàn),具有set集合不重復(fù)的特點(diǎn),同時(shí)具有可預(yù)測(cè)的迭代順序,也就是我們插入的順序,并且linkedHashSet是一個(gè)非線程安全的集合,需要的朋友可以參考下
    2023-09-09
  • springboot入門之profile設(shè)置方式

    springboot入門之profile設(shè)置方式

    這篇文章主要介紹了springboot入門?profile設(shè)置方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Java詳細(xì)解析下拉菜單和彈出菜單的使用

    Java詳細(xì)解析下拉菜單和彈出菜單的使用

    這篇文章主要介紹了怎么用Java來創(chuàng)建和使用下拉菜單和彈出菜單,下拉菜單和彈出菜單是我們經(jīng)常要用的工具,但是你有想過自己怎么去實(shí)現(xiàn)它嗎,感興趣的朋友跟隨文章往下看看吧
    2022-04-04
  • java中復(fù)雜查詢sql語(yǔ)句該怎么寫

    java中復(fù)雜查詢sql語(yǔ)句該怎么寫

    我們知道在java連接數(shù)據(jù)庫(kù)之后,需要數(shù)據(jù)庫(kù)的sql語(yǔ)句,下面這篇文章主要給大家介紹了關(guān)于java中復(fù)雜查詢sql語(yǔ)句該怎么寫的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • Spring Boot 中PageHelper 插件使用配置思路詳解

    Spring Boot 中PageHelper 插件使用配置思路詳解

    這篇文章主要介紹了Spring Boot 中PageHelper 插件使用配置及實(shí)現(xiàn)思路,通過引入myabtis和pagehelper依賴,在yml中配置mybatis掃描和實(shí)體類,具體實(shí)現(xiàn)方法跟隨小編一起看看吧
    2021-08-08
  • java中tomcat的80端口被占用問題解決

    java中tomcat的80端口被占用問題解決

    java中tomcat的80端口被占用問題解決,需要的朋友可以參考一下
    2013-03-03
  • Springboot?多級(jí)緩存設(shè)計(jì)與實(shí)現(xiàn)方案

    Springboot?多級(jí)緩存設(shè)計(jì)與實(shí)現(xiàn)方案

    多級(jí)緩存是提升高并發(fā)系統(tǒng)性能的關(guān)鍵策略之一,它不僅能夠減少系統(tǒng)的響應(yīng)時(shí)間,提高用戶體驗(yàn),還能有效降低后端系統(tǒng)的負(fù)載,防止系統(tǒng)過載,這篇文章主要介紹了Springboot?多級(jí)緩存設(shè)計(jì)與實(shí)現(xiàn),需要的朋友可以參考下
    2024-02-02

最新評(píng)論