激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 使用MyBatis進(jìn)行數(shù)據(jù)庫(kù)映射的方式

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

2021-06-06 13:0652sox Java教程

這篇文章主要介紹了使用MyBatis進(jìn)行數(shù)據(jù)庫(kù)映射的方式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

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

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

?
1
2
3
4
5
<dependency>
 <groupid>org.mybatis</groupid>
 <artifactid>mybatis</artifactid>
 <version>3.4.5</version>
</dependency>

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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)容寫(xiě)入到 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í)打開(kāi)和關(guān)閉連接
  • pooled,連接池
  • jndi,主要用于ejb或應(yīng)用服務(wù)器中使用

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

?
1
2
3
4
url=jdbc:oracle:thin:@xxx.xxx.xxx.xx:1521/orcl
user=xxx
pwd=xxx
driver=oracle.jdbc.driver.oracledriver

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

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

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
<?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)義編碼,如 < 來(lái)進(jìn)行處理,或者直接使用 <![cdata[xxxx]]> 進(jìn)行實(shí)際符號(hào)的處理。

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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();
    }
  }
}

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

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

其結(jié)果為:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[
  {
    "entname":"深圳市藍(lán)海匯裝飾設(shè)計(jì)工程有限公司",
    "uniscid":"91440300359236108q",
    "industry":"批發(fā)和零售業(yè)",
    "region":"深圳",
    "opstate":"存續(xù)(在營(yíng)、開(kāi)業(yè)、在冊(cè))",
    "estyear":"3年以下",
    "scale":"小微企業(yè)"
  },
  {
    "entname":"暴風(fēng)雨(深圳)電子商務(wù)有限公司",
    "uniscid":"91440300ma5df887xe",
    "industry":"批發(fā)和零售業(yè)",
    "region":"深圳",
    "opstate":"存續(xù)(在營(yíng)、開(kāi)業(yè)、在冊(cè))",
    "estyear":"3年以下",
    "scale":"小微企業(yè)"
  },
  ...
]

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

總結(jié)

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

原文鏈接:http://blog.52sox.com/Java-use-Mybatis-reflect-database/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩激情一区 | 国产99久久精品一区二区 | 国语自产免费精品视频在 | www.com超碰 | 久久精品成人免费国产片桃视频 | 欧美亚洲国产一区 | av观看国产 | 亚洲天堂中文字幕在线观看 | 日本不卡二区 | 91avsese| 久久精品一区二区三区四区五区 | 欧美亚洲另类在线 | 亚洲成人伊人 | 九九色在线观看 | 日本残忍极度灌浣肠视频 | 久久国产成人精品国产成人亚洲 | 色网站综合| ,欧美特黄特色三级视频在线观看 | 亚洲热线99精品视频 | 香蕉国产在线视频 | 午夜精品福利视频 | jizzyouxxxx| 久久最新网址 | 国产精品午夜一区 | 韩国十九禁高潮床戏在线观看 | 久久精片 | 国产毛片在线看 | 羞羞的视频在线免费观看 | 黄色免费大片 | 久久久久久久不卡 | 羞羞视频免费网站男男 | 一本到免费视频 | 国产在线精品一区二区不卡 | 视频一区国产精品 | 久久国产精品久久久久久久久久 | 中文日韩在线 | 嫩草91在线 | 97中文字幕第一一一页 | 国产精品久久久久久久久久大牛 | 久久久午夜电影 | 天天看成人免费毛片视频 |