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

MyBatis入門學(xué)習(xí)教程(一)-MyBatis快速入門

 更新時(shí)間:2015年08月11日 11:51:52   作者:孤傲蒼狼  
MyBatis是一個(gè)支持普通SQL查詢,存儲(chǔ)過程和高級映射的優(yōu)秀持久層框架,這篇文章主要給大家分享MyBatis入門學(xué)習(xí)教程(一)-MyBatis快速入門,需要的朋友可以參考下

      MyBatis 本是apache的一個(gè)開源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis 。2013年11月遷移到Github。

iBATIS一詞來源于“internet”和“abatis”的組合,是一個(gè)基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)

首先給大家介紹MyBatis的含義

  MyBatis是一個(gè)支持普通sql查詢,存儲(chǔ)過程和高級映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及對結(jié)果集的檢索封裝。MyBatis可以使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。

二、mybatis快速入門

2.1、準(zhǔn)備開發(fā)環(huán)境

 1、創(chuàng)建測試項(xiàng)目,普通java項(xiàng)目或者是JavaWeb項(xiàng)目均可,如下圖所示:

  

2、添加相應(yīng)的jar包

  【mybatis】

         mybatis-3.1.1.jar

  【MYSQL驅(qū)動(dòng)包】
    mysql-connector-java-5.1.7-bin.jar

   

3、創(chuàng)建數(shù)據(jù)庫和表,針對MySQL數(shù)據(jù)庫

  SQL腳本如下:

create database mybatis;
 use mybatis;
 CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(), age INT);
 INSERT INTO users(NAME, age) VALUES('孤傲蒼狼', );
 INSERT INTO users(NAME, age) VALUES('白虎神皇', );

  將SQL腳本在MySQL數(shù)據(jù)庫中執(zhí)行,完成創(chuàng)建數(shù)據(jù)庫和表的操作,如下:

  

  到此,前期的開發(fā)環(huán)境準(zhǔn)備工作全部完成。

2.2、使用MyBatis查詢表中的數(shù)據(jù)

  1、添加Mybatis的配置文件conf.xml

  在src目錄下創(chuàng)建一個(gè)conf.xml文件,如下圖所示:

  

  conf.xml文件中的內(nèi)容如下:

<?xml version="." encoding="UTF-"?>
 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis--config.dtd">
 <configuration>
   <environments default="development">
     <environment id="development">
       <transactionManager type="JDBC" />
       <!-- 配置數(shù)據(jù)庫連接信息 -->
       <dataSource type="POOLED">
         <property name="driver" value="com.mysql.jdbc.Driver" />
         <property name="url" value="jdbc:mysql://localhost:/mybatis" />
         <property name="username" value="root" />
         <property name="password" value="XDP" />
       </dataSource>
     </environment>
   </environments>
   
 </configuration>

  2、定義表所對應(yīng)的實(shí)體類,如下圖所示:

  

  User類的代碼如下:

package me.gacl.domain;
 
 /**
  * @author gacl
  * users表所對應(yīng)的實(shí)體類
  */
 public class User {
 
   //實(shí)體類的屬性和表的字段名稱一一對應(yīng)
   private int id;
   private String name;
   private int age;
 
   public int getId() {
     return id;
   }
 
   public void setId(int id) {
     this.id = id;
   }
 
   public String getName() {
     return name;
   }
 
   public void setName(String name) {
     this.name = name;
   }
 
   public int getAge() {
     return age;
   }
 
   public void setAge(int age) {
     this.age = age;
   }
 
   @Override
   public String toString() {
     return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
   }
 }

  3、定義操作users表的sql映射文件userMapper.xml

  創(chuàng)建一個(gè)me.gacl.mapping包,專門用于存放sql映射文件,在包中創(chuàng)建一個(gè)userMapper.xml文件,如下圖所示:

  

  userMapper.xml文件的內(nèi)容如下:

 <?xml version="." encoding="UTF-" ?>
  <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper .//EN" "

<!-- 為這個(gè)mapper指定一個(gè)唯一的namespace,namespace的值習(xí)慣上設(shè)置成包名+sql映射文件名,這樣就能夠保證namespace的值是唯一的

  例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后綴)

-->
  <mapper namespace="me.gacl.mapping.userMapper">
      <!-- 在select標(biāo)簽中編寫查詢的SQL語句, 設(shè)置select標(biāo)簽的id屬性為getUser,id屬性值必須是唯一的,不能夠重復(fù)
      使用parameterType屬性指明查詢時(shí)使用的參數(shù)類型,resultType屬性指明查詢返回的結(jié)果集類型
      resultType="me.gacl.domain.User"就表示將查詢結(jié)果封裝成一個(gè)User類的對象返回
     User類就是users表所對應(yīng)的實(shí)體類
     -->

     <!--
         根據(jù)id查詢得到一個(gè)user對象
      -->

  <select id="getUser" parameterType="int" 
     resultType="me.gacl.domain.User">
     select * from users where id=#{id}
   </select>
 </mapper>

  4、在conf.xml文件中注冊userMapper.xml文件

 

 <?xml version="." encoding="UTF-"?>
 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis--config.dtd">
 <configuration>
   <environments default="development">
     <environment id="development">
       <transactionManager type="JDBC" />
       <!-- 配置數(shù)據(jù)庫連接信息 -->
       <dataSource type="POOLED">
         <property name="driver" value="com.mysql.jdbc.Driver" />
         <property name="url" value="jdbc:mysql://localhost:/mybatis" />
         <property name="username" value="root" />
         <property name="password" value="XDP" />
       </dataSource>
     </environment>
   </environments>
   
   <mappers>
     <!-- 注冊userMapper.xml文件, 
     userMapper.xml位于me.gacl.mapping這個(gè)包下,所以resource寫成me/gacl/mapping/userMapper.xml-->
     <mapper resource="me/gacl/mapping/userMapper.xml"/>
   </mappers>
   
 </configuration>

  5、編寫測試代碼:執(zhí)行定義的select語句

  創(chuàng)建一個(gè)Test1類,編寫如下的測試代碼:

package me.gacl.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import me.gacl.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Test {
  public static void main(String[] args) throws IOException {
    //mybatis的配置文件
    String resource = "conf.xml";
    //使用類加載器加載mybatis的配置文件(它也加載關(guān)聯(lián)的映射文件)
    InputStream is = Test.class.getClassLoader().getResourceAsStream(resource);
    //構(gòu)建sqlSession的工廠
    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
    //使用MyBatis提供的Resources類加載mybatis的配置文件(它也加載關(guān)聯(lián)的映射文件)
    //Reader reader = Resources.getResourceAsReader(resource); 
    //構(gòu)建sqlSession的工廠
    //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
    //創(chuàng)建能執(zhí)行映射文件中sql的sqlSession
    SqlSession session = sessionFactory.openSession();
    /**
     * 映射sql的標(biāo)識字符串,
     * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標(biāo)簽的namespace屬性的值,
     * getUser是select標(biāo)簽的id屬性值,通過select標(biāo)簽的id屬性值就可以找到要執(zhí)行的SQL
     */
    String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的標(biāo)識字符串
    //執(zhí)行查詢返回一個(gè)唯一user對象的sql
    User user = session.selectOne(statement, );
    System.out.println(user);
  }
}

  執(zhí)行結(jié)果如下:

  

有上圖可以看出,數(shù)據(jù)庫中記錄已經(jīng)成功查詢出來。

以上就是本文針對MyBatis入門學(xué)習(xí)教程(一)-MyBatis快速入門的全部內(nèi)容,希望對大家有所幫助。

相關(guān)文章

  • Java并行執(zhí)行任務(wù)的幾種方案小結(jié)

    Java并行執(zhí)行任務(wù)的幾種方案小結(jié)

    這篇文章主要介紹了Java并行執(zhí)行任務(wù)的幾種方案小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java SSH 秘鑰連接mysql數(shù)據(jù)庫的方法

    Java SSH 秘鑰連接mysql數(shù)據(jù)庫的方法

    這篇文章主要介紹了Java SSH 秘鑰連接mysql數(shù)據(jù)庫的方法,包括引入依賴的代碼和出現(xiàn)異常報(bào)錯(cuò)問題,需要的朋友可以參考下
    2021-06-06
  • Java?SE之了解泛型

    Java?SE之了解泛型

    這篇文章主要介紹了Java?SE之了解泛型,文章內(nèi)容詳細(xì),簡單易懂,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2023-01-01
  • Java面試題沖刺第二天--Redis篇

    Java面試題沖刺第二天--Redis篇

    這篇文章主要為大家分享了最有價(jià)值的三道java面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • SpringBoot統(tǒng)一響應(yīng)格式及統(tǒng)一異常處理

    SpringBoot統(tǒng)一響應(yīng)格式及統(tǒng)一異常處理

    在我們開發(fā)SpringBoot后端服務(wù)時(shí),一般需要給前端統(tǒng)一響應(yīng)格式,本文主要介紹了SpringBoot統(tǒng)一響應(yīng)格式及統(tǒng)一異常處理
    2023-05-05
  • Java實(shí)現(xiàn)全圖背景水印的示例詳解

    Java實(shí)現(xiàn)全圖背景水印的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)全圖背景水印的方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2023-02-02
  • 詳解SpringBoot如何統(tǒng)一后端返回格式

    詳解SpringBoot如何統(tǒng)一后端返回格式

    今天我們來聊一聊在基于SpringBoot前后端分離開發(fā)模式下,如何友好的返回統(tǒng)一的標(biāo)準(zhǔn)格式以及如何優(yōu)雅的處理全局異常,感興趣的可以了解一下
    2021-07-07
  • Java并發(fā)之串行線程池實(shí)例解析

    Java并發(fā)之串行線程池實(shí)例解析

    這篇文章主要介紹了Java并發(fā)之串行線程池實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 使用SpringBoot整合ssm項(xiàng)目的實(shí)例詳解

    使用SpringBoot整合ssm項(xiàng)目的實(shí)例詳解

    Spring Boot 現(xiàn)在已經(jīng)成為 Java 開發(fā)領(lǐng)域的一顆璀璨明珠,它本身是包容萬象的,可以跟各種技術(shù)集成。這篇文章主要介紹了使用SpringBoot整合ssm項(xiàng)目,需要的朋友可以參考下
    2018-11-11
  • zuul集成Sentinel,完成對path映射的限流操作

    zuul集成Sentinel,完成對path映射的限流操作

    這篇文章主要介紹了zuul集成Sentinel,完成對path映射的限流操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論