mybatis框架入門程序:演示經過mybatis實現數據庫的查詢操做

咱們如今工程基於的數據庫見「https://www.cnblogs.com/wyhluckdog/p/10147754.html 」這篇博文。html

1.mybatis下載java

  mybatis的代碼由githua.com管理,地址:https://github.com/mybatis/mybatis-3/releasesmysql

  

  * mybatis-3.2.7.jar----mybatis的核心包git

  * lib----mybatis的依賴包github

  * mybatis-3.2.7.pdf----mybatis使用手冊spring

2.需求sql

  實現如下功能:數據庫

    根據用戶id查詢一個用戶的信息apache

    根據用戶名稱模糊查詢用戶信息列表session

    添加用戶

    更新用戶

    刪除用戶

3.工程搭建

(1)第一步:建立java工程

  使用ecplise建立java工程,jdk爲1.7.0_72.

(2)第二步:導入jar包

  加入mybatis核心包、依賴包(在lib目錄下)、數據驅動包、單元測試包。

  

(3)第三步:建立包結構config,咱們將全部的配置文件均放在這個包下。

(4)第四步:在config包下建立配置文件log4j.properties。

# Global logging configuration log4j.rootLogger=DEBUG, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

  mybatis默認使用log4j做爲做爲輸出日誌信息。

(5)第五步:在config包下建立SqlMapConfig.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>
    <!-- 和spring整合後 environments配置將廢除-->
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事務管理-->
            <transactionManager type="JDBC" />
        <!-- 數據庫鏈接池-->
        <!-- mybatis內置的鏈接池效率不高因此實際公司開發中咱們不用 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
    
</configuration>

   SqlMapConfig.xml是mybatis核心配置文件,上邊文件的配置內容爲數據源、事務管理。

(6)第六步:po類。在工程下建立po包,用於放置po類(本質上與bean類沒有區別,一樣是參數和對應的set/get方法)。

  po類做爲mybatis進行sql映射使用,po類一般與數據庫表對應,User.java以下:

package com.huida.po; import java.util.Date; public class User { private int id; private String username;// 用戶姓名
    private String sex;// 性別
    private Date birthday;// 生日
    private String address;// 地址
    public void setId(int id) { this.id = id; } public void setUsername(String username) { this.username = username; } public void setSex(String sex) { this.sex = sex; } public void setBirthday(Date birthday) { this.birthday = birthday; } public void setAddress(String address) { this.address = address; } public int getId() { return id; } public String getUsername() { return username; } public String getSex() { return sex; } public Date getBirthday() { return birthday; } public String getAddress() { return address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + "]"; } }

(7)sql映射文件。

  在config包下建立sql映射文件User.xml:

<?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">
<!-- namespace:命名空間,作Sql隔離 -->
<!-- 在mapper標籤中要寫不少sql語句。在開發項目的過程當中有不少人都會寫Sql 語句,在最後整合的時候可能會重複。如今咱們使用命名空間開進行隔離,好比zhangsan 寫的select * from user,咱們能夠寫爲:zhangsan:select * from user來進行標識。 -->
<mapper namespace="test">

</mapper>

  namespace:命名空間,用於sql隔離語句。

  在mapper標籤中要寫不少sql語句。在開發項目的過程當中有不少人都會寫Sql語句,在最後整合的時候可能會重複。如今咱們使用命名空間開進行隔離,好比zhangsan寫的select * from user,咱們能夠寫爲:zhangsan:select * from user來進行標識。

(8)第八步:加載映射文件。

  mybatis框架須要加載映射文件,將User.xml添加在SqlMapConfig.xml,以下:

<mappers>
        <mapper resource="config/User.xml"/>
    </mappers>

(9)第九步:根據id查詢用戶信息

  一、映射文件:

  在User.xml的mapper標籤中添加:

<!-- id:sql語句的惟一標識 test:findUserById就能夠惟一標識sql語句 paremeterType:指定傳入的參數類型 resultSetType:返回值結果類型 #{}佔位符:起到佔位的左永剛,若是傳入的基本類型{String,long,double,int boolean等},那麼 #{}中的變量名稱能夠隨意寫。 -->
    <select id="findUserById" parameterType="java.lang.Integer" resultType="com.huida.po.User">
        <!-- select語句返回的是user對象,因此resultType中寫User類的全路徑 --> select * from user where id=#{id} </select>
  id:sql語句的惟一標識   test:findUserById就能夠惟一標識sql語句
    paremeterType:指定傳入的參數類型
    resultSetType:返回值結果類型
    #{}佔位符:起到佔位的左永剛,若是傳入的基本類型{String,long,double,int boolean等},那麼#{}中的變量名稱能夠隨意寫。

  二、測試程序:

package com.huida.test; 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 org.junit.Test; import com.huida.po.User; public class UserTest { @Test public void testFindUserById() throws Exception{ //經過流將核心配置文件讀取進來
        InputStream inputStream=Resources.getResourceAsStream("config/SqlMapConfig.xml"); //經過核心配置文件輸入流來建立工廠
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream); //經過工廠建立session
        SqlSession openSession=factory.openSession(); //查詢語句,查詢id爲1的記錄,返回值爲User對象
        User user=openSession.selectOne("test.findUserById", 1); System.out.println(user); //關閉資源
 openSession.close(); //factory沒有close(),由於session關閉以後,factory也就關閉了。
 } }

(10)執行測試程序,單元測試UserTest方法,能夠看到在控制檯輸出id以及username。說明查詢成功。

相關文章
相關標籤/搜索