一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Windows下Java+MyBatis框架+MySQL的開(kāi)發(fā)環(huán)境搭建教程

Windows下Java+MyBatis框架+MySQL的開(kāi)發(fā)環(huán)境搭建教程

2020-04-15 11:43紅燒獅子頭 JAVA教程

這篇文章主要介紹了Windows下Java+MyBatis框架+MySQL的開(kāi)發(fā)環(huán)境搭建教程,Mybatis對(duì)普通SQL語(yǔ)句的支持非常好,需要的朋友可以參考下

MyBatis是一個(gè)Java持久化框架,它通過(guò)XML描述符或注解把對(duì)象與存儲(chǔ)過(guò)程或SQL語(yǔ)句關(guān)聯(lián)起來(lái)。

MyBatis是在Apache許可證 2.0下分發(fā)的自由軟件,是iBATIS 3.0的分支版本。其維護(hù)團(tuán)隊(duì)也包含iBATIS的初創(chuàng)成員。
與其他的對(duì)象關(guān)系映射框架不同,MyBatis并沒(méi)有將Java對(duì)象與數(shù)據(jù)庫(kù)表關(guān)聯(lián)起來(lái),而是將Java方法與SQL語(yǔ)句關(guān)聯(lián)。MyBatis允許用戶充分利用數(shù)據(jù)庫(kù)的各種功能,例如存儲(chǔ)過(guò)程、視圖、各種復(fù)雜的查詢以及某數(shù)據(jù)庫(kù)的專有特性。如果要對(duì)遺留數(shù)據(jù)庫(kù)、不規(guī)范的數(shù)據(jù)庫(kù)進(jìn)行操作,或者要完全控制SQL的執(zhí)行,MyBatis是一個(gè)不錯(cuò)的選擇。

與JDBC相比,MyBatis簡(jiǎn)化了相關(guān)代碼:SQL語(yǔ)句在一行代碼中就能執(zhí)行。MyBatis提供了一個(gè)映射引擎,聲明式的把SQL語(yǔ)句執(zhí)行結(jié)果與對(duì)象樹(shù)映射起來(lái)。通過(guò)使用一種內(nèi)建的類XML表達(dá)式語(yǔ)言,或者使用Apache Velocity集成的插件,SQL語(yǔ)句可以被動(dòng)態(tài)的生成。

MyBatis與Spring Framework和Google Guice集成,這使開(kāi)發(fā)者免于依賴性問(wèn)題。

MyBatis支持聲明式數(shù)據(jù)緩存(declarative data caching)。當(dāng)一條SQL語(yǔ)句被標(biāo)記為“可緩存”后,首次執(zhí)行它時(shí)從數(shù)據(jù)庫(kù)獲取的所有數(shù)據(jù)會(huì)被存儲(chǔ)在一段高速緩存中,今后執(zhí)行這條語(yǔ)句時(shí)就會(huì)從高速緩存中讀取結(jié)果,而不是再次命中數(shù)據(jù)庫(kù)。MyBatis提供了默認(rèn)下基于Java HashMap的緩存實(shí)現(xiàn),以及用于與OSCache、Ehcache、Hazelcast和Memcached連接的默認(rèn)連接器。MyBatis還提供API供其他緩存實(shí)現(xiàn)使用。 

要點(diǎn)
這段時(shí)間學(xué)習(xí)下來(lái),其實(shí)對(duì)Mybatis來(lái)說(shuō)主要的過(guò)程無(wú)法是以下幾步

  1. 從XML配置文件中獲取SessionFactory,然后由SessionFactory產(chǎn)生相應(yīng)的Session。

  2. 是用Session對(duì)象對(duì)業(yè)務(wù)數(shù)據(jù)完成相應(yīng)的CRUD操作(增刪改查)和相應(yīng)的事務(wù)控制。

  3. 使用完畢后關(guān)閉相應(yīng)的Session,以免過(guò)度占用資源

  4. 使用配置相應(yīng)的Mapper xml文件進(jìn)行業(yè)務(wù)實(shí)體的JavaBean與數(shù)據(jù)庫(kù)表之間做相應(yīng)的Map操作

戰(zhàn)前準(zhǔn)備:

  1. 開(kāi)發(fā)環(huán)境Eclipse JavaEE IDE,JDK 1.6,數(shù)據(jù)庫(kù)mysql 5.5

  2. 下載相應(yīng)Jar包,以備后用

    mybatis-3.2.3.zip 解壓后拿出 mybatis-3.2.3.jar,=> 下載地址: http://code.google.com/p/mybatis/ (Mybatis核心包)

    mybatis-generator-core-1.3.1.jar => 下載地址: http://code.google.com/p/mybatis/wiki/Generator (Mybatis自動(dòng)生成配置文件包)

    mysql-connector-java-5.1.26-bin.jar => 下載地址:http://dev.mysql.com/downloads/connector/j/ (Mysql 的jdbc驅(qū)動(dòng)包)

搭建步驟  

  接下來(lái)大家可以再Eclipse下面建一個(gè)名為MybatisDemo的Java Project項(xiàng)目,按照如下圖中所示新建相應(yīng)的包結(jié)構(gòu)和文件夾結(jié)構(gòu),其中config與mapper分別為文件夾,

  包david.mybatis.demo與包david.mybatis.model下分別存放相應(yīng)的demo運(yùn)行程序與Javabean對(duì)象,lib文件夾下存放剛剛下載的那幾個(gè)第三方j(luò)ar包。

Windows下Java+MyBatis框架+MySQL的開(kāi)發(fā)環(huán)境搭建教程

建完下面的目錄,我們可以添加相應(yīng)的Jar包,如下圖

Windows下Java+MyBatis框架+MySQL的開(kāi)發(fā)環(huán)境搭建教程

Windows下Java+MyBatis框架+MySQL的開(kāi)發(fā)環(huán)境搭建教程

完成后,執(zhí)行下面SQL,建立DEMO所需的表結(jié)構(gòu),分別有3張表,Visitor(訪問(wèn)者表),Website(網(wǎng)站表),Channel(頻道表)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*創(chuàng)建Visitor*/
CREATE TABLE Visitor
(
  Id INT(11) NOT NULL AUTO_INCREMENT,
  Name VARCHAR(1000) NOT NULL,
  Email VARCHAR(1000) NOT NULL,
  Status INT NOT NULL DEFAULT 1,
  CreateTime DateTime,
  PRIMARY KEY(Id)
)
/*創(chuàng)建網(wǎng)站表*/
CREATE TABLE Website
(
  Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  Name VARCHAR(1000) NOT NULL,
  VisitorId INT REFERENCES Visitor(Id),
  Status INT NOT NULL DEFAULT 1,
  CreateTime DateTime
)
 
/*創(chuàng)建頻道表*/
CREATE TABLE Channel
(
  Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  Name VARCHAR(1000) NOT NULL,
  WebsiteId INT REFERENCES Website(Id),
  Status INT NOT NULL DEFAULT 1,
  CreateTime DateTime
)

所有這些都完成后,我們就要開(kāi)始動(dòng)手啦~

就像開(kāi)頭說(shuō)的,Mybatis的所有配置都源于一份XML配置文件,我們需要在config文件夾下,新建名為mybatis_demo_config.xml的配置文件,這一份東西就是我們后面所需要操作的核心之一。

在配置這個(gè)文件千萬(wàn)要注意<configuration>節(jié)點(diǎn)內(nèi)的元素都是有層級(jí)順序的要求的,不能夠隨意更換次序,否則在加載xml配置文件的時(shí)候會(huì)出現(xiàn)異常而導(dǎo)致后續(xù)操作不成功。

具體的節(jié)點(diǎn)說(shuō)明大家可以查看http://mybatis.github.io/mybatis-3/zh/configuration.html#,這里只說(shuō)比較常用的節(jié)點(diǎn),typeAliases,environments,mappers。

1. typeAliases => 別名節(jié)點(diǎn),可以通過(guò)設(shè)置這個(gè)節(jié)點(diǎn)的屬性,這樣配置文件中其他需要實(shí)體名字的地方都可以使用此別名而不是完全限定名

例如 <typeAlias type="david.mybatis.model.Visitor" alias="Visitor" />

2. environments => 環(huán)境節(jié)點(diǎn),配置數(shù)據(jù)連接相關(guān)的信息

3. mappers => 配置SQL映射語(yǔ)句。

最簡(jiǎn)單的配置如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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>
  <typeAliases>
    <typeAlias type="david.mybatis.model.Visitor" alias="Visitor" />
  </typeAliases>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"></transactionManager>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver" />
        <!-- ?useUnicode=true&characterEncoding=utf8為了支持中文插入 -->
        <property name="url"
          value="jdbc:mysql://127.0.0.1:3306/mybatis_db?useUnicode=true&characterEncoding=utf8" />
        <property name="username" value="root" />
        <property name="password" value="123456" />
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="mapper/VisitorMapper.xml" />
  </mappers>
</configuration>

在包david.mybatis.demo下面新建一個(gè)名為MyBatisUtils類,里面存放獲取SqlSession與關(guān)閉SqlSession的方法,提煉出來(lái)方便多次復(fù)用。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package david.mybatis.demo;
 
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
import david.mybatis.model.CRUD_Enum;
 
public class MybatisUtils {
 
  private static final String CONFIG_PATH = "config/mybatis_demo_config.xml";
 
  /*
   * 獲取數(shù)據(jù)庫(kù)訪問(wèn)鏈接
   */
  public static SqlSession getSqlSession() {
    SqlSession session = null;
    try {
      InputStream stream = Resources.getResourceAsStream(CONFIG_PATH);
      //可以根據(jù)配置的相應(yīng)環(huán)境讀取相應(yīng)的數(shù)據(jù)庫(kù)環(huán)境
      // SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(
      // stream, "development");
      SqlSessionFactory factory = new SqlSessionFactoryBuilder()
          .build(stream);
      session = factory.openSession();
    } catch (Exception e) {
      // TODO: handle exception
      e.printStackTrace();
    }
    return session;
  }
 
  /*
   * 獲取數(shù)據(jù)庫(kù)訪問(wèn)鏈接
   */
  public static void closeSession(SqlSession session) {
    session.close();
  }
  
  /*
   * 返回操作記錄消息
   */
  public static void showMessages(CRUD_Enum type, int count) {
    switch (type) {
    case Add:
      System.out.println("添加了" + count + "條記錄。");
      break;
    case Delete:
      System.out.println("刪除了" + count + "條記錄。");
      break;
    case Update:
      System.out.println("更新了" + count + "條記錄。");
      break;
    case Query:
      System.out.println("匹配了" + count + "條記錄。");
      break;
    case List:
      System.out.println("共有" + count + "條記錄。");
      break;
    default:
      break;
    }
  }
}

在包david.mybatis.model下面新建一個(gè)名為Visitor的類,用來(lái)作相應(yīng)的OR Mapping。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package david.mybatis.model;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class Visitor {
  private int id;
  private String name;
  private String email;
  private int status;
  private Date createTime;
 
  public Visitor() {
    // TODO Auto-generated constructor stub
    createTime = new Date();
  }
 
  public Visitor(String name, String email) {
    this.name = name;
    this.email = email;
    this.status = 1;
    this.createTime = new Date();
  }
 
  public int getId() {
    return id;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public String getName() {
    return name;
  }
 
  public void setEmail(String email) {
    this.email = email;
  }
 
  public String getEmail() {
    return email;
  }
 
  public Date getCreateTime() {
    return createTime;
  }
 
  @Override
  public String toString() {
    // TODO Auto-generated method stub
    return String.format("{Id: %d, Name: %s, CreateTime: %s}", id, name,
        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime));
  }
}

在包david.mybatis.demo下面新建一個(gè)VisitorMapper.xml,用來(lái)映射相應(yīng)SQL語(yǔ)句。

這里要注意namespace=>david.mybatis.demo.IVisitorOperation一定要與對(duì)應(yīng)這個(gè)包下面的實(shí)際文件名,IVisitorOperation否則無(wú)法成功加載相應(yīng)的映射文件

?
1
2
3
4
5
6
<mapper namespace="david.mybatis.demo.IVisitorOperation">
  <select id="basicQuery" parameterType="int" resultType="Visitor">
    select * from visitor where id=#{id} and
    Status>0 order by Id
  </select>
</mapper>

接下來(lái)運(yùn)行下面的程序

?
1
2
3
4
5
6
7
8
9
10
public static void testBasicQuery(int id) {
   SqlSession session = MybatisUtils.getSqlSession();
   try {
     Visitor visitor = (Visitor) session.selectOne("david.mybatis.demo.IVisitorOperation.basicQuery", id);
     MybatisUtils.closeSession(session);
     System.out.println(visitor);
   } catch (Exception e) {
     // TODO: handle exception
   }
 }

一個(gè)最簡(jiǎn)單的執(zhí)行結(jié)果就出來(lái)啦

Windows下Java+MyBatis框架+MySQL的開(kāi)發(fā)環(huán)境搭建教程

這算是Mybatis系列的HelloWord~

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产精品一区二区三区久久 | ai换脸杨颖被啪在线观看 | 成人精品亚洲人成在线 | 亚洲人成在线观看一区二区 | 91狠狠 | 国产免费午夜高清 | 红杏劫 | 午夜理伦片免费 | 色综合亚洲天天综合网站 | haodiaocao的视频这里看 | 秘书在办公室疯狂被hd | 欧美日韩一区不卡 | 日韩欧美国产成人 | 11 13加污女qq看他下面 | 99re8在这里只有精品2 | 成人夜视频寂寞在线观看 | 欧美午夜寂寞影院安卓列表 | 欧美艳星kagney1ynn | 欧美性一区二区三区 | 日韩毛片免费线上观看 | 精品久久久久久久久久香蕉 | 午夜久久久久久网站 | 成人在线视频播放 | 亚洲精品综合一二三区在线 | 日韩精品免费看 | 操碰人人| 亚洲欧美综合人成野草 | 男男playh片在线观看 | 日本一区二区三区四区无限 | 国产极品精频在线观看 | 国内精品91久久久久 | 顶级欧美做受xxx000 | 我和么公的秘密小说免费 | 高清女主播一区二区三区 | 视频一区在线免费观看 | 校花被老头夺去第一次动图 | 99国产国人青青视频在线观看 | 国产裸舞福利资源在线视频 | 九九九国产在线 | 高清免费毛片 | 国产色视频一区二区三区 |