中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用MyBatis進行數據庫映射的方式

發布時間:2020-10-11 09:55:38 來源:腳本之家 閱讀:188 作者:mrr 欄目:編程語言

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

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

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

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

<?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>

我們將上述的內容寫入到 config.xml 文件中。其中environments是配置的環境,其中的environment用于對應的環境的配置。這里,我們默認使用的環境是 my-config ,其使用JDBC的方式進行連接,數據源的方式為連接池。其中,數據源可以使用:

  • UNPOOLED,每次請求時打開和關閉連接
  • POOLED,連接池
  • JNDI,主要用于EJB或應用服務器中使用

而環境通過對 db.properties 中的內容進行配置,其內容如下:

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

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

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

resource,使用相對于類路徑的資源引用

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

class,使用映射器接口實現類的完全限定類名

name,將包內的映射器接口實現全部注冊為映射器

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

<?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中,括號具有單獨的意義,因此如果我們使用尖括號會出現解析錯誤,此時我們可以使用HTML實體轉義編碼,如 &lt; 來進行處理,或者直接使用 <![CDATA[xxxx]]> 進行實際符號的處理。

我們通過mapper標簽中的namespace定義了映射的命名空間,其中的id用于對應語句的匹配,方便進行命名解析。

接著是對應的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類對配置文件進行讀取,然后構建1個SqlSessionFactory,之后通過其openSession得到1個Session對象,這樣我們就可以進行對應的SQL操作了。

我們使用selectList函數進行對應SQL的執行,其使用的是 命名空間.id 的方式來進行對應的操作。另外,還有1個selectOne函數用于單個記錄的查詢,對于多個結果會直接返回異常。

其結果為:

[
  {
    "ENTNAME":"深圳市藍海匯裝飾設計工程有限公司",
    "UNISCID":"91440300359236108Q",
    "INDUSTRY":"批發和零售業",
    "REGION":"深圳",
    "OPSTATE":"存續(在營、開業、在冊)",
    "ESTYEAR":"3年以下",
    "SCALE":"小微企業"
  },
  {
    "ENTNAME":"暴風雨(深圳)電子商務有限公司",
    "UNISCID":"91440300MA5DF887XE",
    "INDUSTRY":"批發和零售業",
    "REGION":"深圳",
    "OPSTATE":"存續(在營、開業、在冊)",
    "ESTYEAR":"3年以下",
    "SCALE":"小微企業"
  },
  ...
]

可以看到,通過上述的方式,我們可以很容易的實現代碼與SQL語句的分離。但是,對應的SQL語句依賴于數據庫,可移植性差。另外,對于字段多、關聯表多時,編寫SQL語句的工作量很大。

總結

以上所述是小編給大家介紹的使用MyBatis進行數據庫映射,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湟源县| 博白县| 洪湖市| 广灵县| 留坝县| 武鸣县| 农安县| 城步| 万载县| 广南县| 祁门县| 保山市| 汾阳市| 九龙坡区| 托克托县| 三门县| 东莞市| 蒲江县| 澜沧| 佛教| 伊宁县| 江达县| 惠水县| 嘉禾县| 长葛市| 铜山县| 搜索| 子长县| 翁源县| 靖安县| 霍州市| 吴旗县| 长宁县| 临江市| 名山县| 惠安县| 汉沽区| 蚌埠市| 阿合奇县| 松原市| 花垣县|