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

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

 更新時間:2016年04月06日 14:40:21   作者:紅燒獅子頭  
這篇文章主要介紹了Windows下Java+MyBatis框架+MySQL的開發(fā)環(huán)境搭建教程,Mybatis對普通SQL語句的支持非常好,需要的朋友可以參考下

MyBatis是一個Java持久化框架,它通過XML描述符或注解把對象與存儲過程或SQL語句關聯(lián)起來。

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

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

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

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

要點
這段時間學習下來,其實對Mybatis來說主要的過程無法是以下幾步

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

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

  3. 使用完畢后關閉相應的Session,以免過度占用資源

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

戰(zhàn)前準備:

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

  2. 下載相應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自動生成配置文件包)

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

搭建步驟  

  接下來大家可以再Eclipse下面建一個名為MybatisDemo的Java Project項目,按照如下圖中所示新建相應的包結構和文件夾結構,其中config與mapper分別為文件夾,

  包david.mybatis.demo與包david.mybatis.model下分別存放相應的demo運行程序與Javabean對象,lib文件夾下存放剛剛下載的那幾個第三方jar包。

201646141757210.png (406×604)

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

201646141820515.png (1029×729)

201646141852872.png (332×102)

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

/*創(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
)

所有這些都完成后,我們就要開始動手啦~

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

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

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

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

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

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

3. mappers => 配置SQL映射語句。

最簡單的配置如下:

<?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&amp;characterEncoding=utf8為了支持中文插入 -->
        <property name="url"
          value="jdbc:mysql://127.0.0.1:3306/mybatis_db?useUnicode=true&amp;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下面新建一個名為MyBatisUtils類,里面存放獲取SqlSession與關閉SqlSession的方法,提煉出來方便多次復用。

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ù)庫訪問鏈接
   */
  public static SqlSession getSqlSession() {
    SqlSession session = null;
    try {
      InputStream stream = Resources.getResourceAsStream(CONFIG_PATH);
      //可以根據(jù)配置的相應環(huán)境讀取相應的數(shù)據(jù)庫環(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ù)庫訪問鏈接
   */
  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下面新建一個名為Visitor的類,用來作相應的OR Mapping。

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下面新建一個VisitorMapper.xml,用來映射相應SQL語句。

這里要注意namespace=>david.mybatis.demo.IVisitorOperation一定要與對應這個包下面的實際文件名,IVisitorOperation否則無法成功加載相應的映射文件

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

接下來運行下面的程序

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

一個最簡單的執(zhí)行結果就出來啦

201646142039597.png (546×121)

這算是Mybatis系列的HelloWord~

相關文章

  • SpringBoot3使用Jasypt實現(xiàn)配置文件信息加密的方法

    SpringBoot3使用Jasypt實現(xiàn)配置文件信息加密的方法

    對于一些單體項目而言,在沒有使用SpringCloud的情況下,配置文件中包含著大量的敏感信息,如果這些信息泄露出去將會對企業(yè)的資產(chǎn)產(chǎn)生重大威脅,因此,對配置文件中的敏感信息加密是一件極其必要的事,所以本文介紹了SpringBoot3使用Jasypt實現(xiàn)配置文件信息加密的方法
    2024-07-07
  • SpringBoot lombok(注解@Getter @Setter)詳解

    SpringBoot lombok(注解@Getter @Setter)詳解

    通過使用Lombok庫,SpringBoot應用可以自動化生成常用的方法如setter和getter,顯著降低了代碼冗余并提高了開發(fā)效率,Lombok的@Getter和@Setter注解用于自動生成屬性的訪問和修改方法,而@Data注解則提供了一個全面的解決方案
    2024-11-11
  • java string 轉date方法如何實現(xiàn)

    java string 轉date方法如何實現(xiàn)

    在開發(fā)應用中經(jīng)常會使用到java string 轉date這種不是很常見的做法,本文將以此問題提供詳細解決方案,需要了解的朋友可以參考下
    2012-11-11
  • Java 求解如何把二叉搜索樹轉換為累加樹

    Java 求解如何把二叉搜索樹轉換為累加樹

    這篇文章主要介紹了Java 求解把二叉搜索樹轉換為累加樹的代碼,總之需要觀察示例節(jié)點的規(guī)律,需要記錄上個節(jié)點的情況,注意引入前驅節(jié)點pre,具體實例代碼跟隨小編一起看看吧
    2021-11-11
  • zuul過濾器中轉發(fā)請求頭的解決方案

    zuul過濾器中轉發(fā)請求頭的解決方案

    這篇文章主要介紹了zuul過濾器中轉發(fā)請求頭的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java中的JetCache?實戰(zhàn)

    Java中的JetCache?實戰(zhàn)

    這篇文章主要介紹了Java中的JetCache實戰(zhàn),JetCache是一個基于Java的緩存系統(tǒng)封裝,提供統(tǒng)一的API和注解來簡化緩存的使用,下文更多相關資料需要的小伙伴可以參考一下
    2022-04-04
  • SpringBoot項目啟動錯誤:找不到或無法加載主類的幾種解決方法

    SpringBoot項目啟動錯誤:找不到或無法加載主類的幾種解決方法

    本文主要介紹了SpringBoot項目啟動錯誤:找不到或無法加載主類的幾種解決方法,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Java實戰(zhàn)之吃貨聯(lián)盟訂餐系統(tǒng)

    Java實戰(zhàn)之吃貨聯(lián)盟訂餐系統(tǒng)

    這篇文章主要介紹了Java實戰(zhàn)之吃貨聯(lián)盟訂餐系統(tǒng),文中有非常詳細的代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 關于Java中byte[]?和?String互相轉換問題

    關于Java中byte[]?和?String互相轉換問題

    這篇文章主要介紹了Java中byte[]?和?String互相轉換問題,通過用例給大家介紹了通過String類將String轉換成byte[]或者byte[]轉換成String,具體實例代碼跟隨小編一起看看吧
    2022-01-01
  • springboot?maven?打包插件介紹及注意事項說明

    springboot?maven?打包插件介紹及注意事項說明

    這篇文章主要介紹了springboot?maven?打包插件介紹及注意事項說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論

富蕴县| 唐海县| 峡江县| 内丘县| 自治县| 林芝县| 始兴县| 都昌县| 南木林县| 台安县| 安塞县| 康乐县| 增城市| 南木林县| 丽水市| 丰都县| 文化| 申扎县| 商洛市| 马尔康县| 文成县| 雷州市| 融水| 南召县| 那坡县| 和硕县| 东乌珠穆沁旗| 垫江县| 七台河市| 南郑县| 福泉市| 紫云| 社旗县| 黎川县| 淄博市| 余干县| 济南市| 黎城县| 绿春县| 乐清市| 平山县|