初識mybatis,第一個簡單的mybatis項目


 

聲明:I‘m 初學者,這是我對mybytis的初步認識

這是一個簡單的不能再簡單的初級Mybatis項目,它可以使我們連接數據庫更加容易,思路更加清晰。我這里用一個圖來解釋一下: 

開始創建這個項目:

 

 

這是我項目中用的數據庫,數據庫名是store,表名person,屬性如圖

 

1.創建一個java項目

2.在項目中新建一個文件夾lib

3.把連接mysql的jar包和mybatis包放進去bulidpath一下

4.創建包目錄如下

這里  com.dongline.mybatistest包存放的java代碼,

config存放的全局配置文件和映射文件

5.在config下創建全局配置文件mybatisconfig.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>
<!-- 全局配置文件 -->
      <environments default="development">
          <environment id="development">

             <transactionManager type="JDBC"/>
            
             <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                 <property name="url"     value="jdbc:mysql://localhost:3306/store?    characterEncoding=utf-8"/>
                 <property name="username" value="root"/>
                 <property name="password" value="123456"/>
             </dataSource>
         </environment>
     </environments>

 </configuration>

代碼很多,信息量很大,但大多都是模版代碼。

這里我關注的是dataSource

標簽property代表的是屬性。這里我們就能和以前Dao原始開發方式有點關聯了。driver,url username,password屬性就是以前我們初始化連接對象所用到的。

這里只需要把value值設置成自己數據庫對應的值即可。

 

6.創建Person類

package com.dongline.mybatistest;

public class Person {

    String personname;
    String persongpassword;
    int persongid;
    String personmail;
    @Override
    public String toString() {
        return "Person [personname=" + personname + ", persongpassword=" + persongpassword + ", persongid=" + persongid
                + ", personmail=" + personmail + "]";
    }
    public String getPersonname() {
        return personname;
    }
    public void setPersonname(String personname) {
        this.personname = personname;
    }
    public String getPersongpassword() {
        return persongpassword;
    }
    public void setPersongpassword(String persongpassword) {
        this.persongpassword = persongpassword;
    }
    public int getPersongid() {
        return persongid;
    }
    public void setPersongid(int persongid) {
        this.persongid = persongid;
    }
    public String getPersonmail() {
        return personmail;
    }
    public void setPersonmail(String personmail) {
        this.personmail = personmail;
    }
}

這里就是數據庫中person表對應的Person類。它是數據庫數據和java數據之間傳遞的載體。

7.在config文件夾添加person.xml映射文件

其中內容為

<?xml version="1.0" encoding="UTF-8" ?>   
<!DOCTYPE mapper   
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> 
<!-- 映射文件 -->
<mapper namespace="test">
<select id="findPersonByName" resultType="com.dongline.mybatistest.Person" parameterType="java.lang.String">
select * from person where personname=#{id}          
</select>


</mapper>

 

 我們關注的是mapper標簽namespace是我們自己設置的,為了避免工程中引用引起同名沖突,就像c++中的namespace一樣。

 

mapper標簽下可以配置我們的數據庫增刪改查邏輯這里我就不一一展示,我以查詢為例

 

 

然后是一個select標簽

這里id是我們調用這個select的唯一標識。

resultTpye是這個查詢語句結果所對應的單個對象類型(當查詢結果為List時每個結果的類型)

parameterType是輸入類型我們看到sql語句中的personname=#{id} #{id}所對應的類型

其中#{}代表一個輸入參數(是防sql注入的)

 這里的輸入和輸出類型如果不是java簡單類型都要加上包名。輸入類型和輸出類型都可以是我們自己創建的pojo

也就是我們sql和java 數據傳遞的載體

 

 

 8.

我們映射文件配置好了但是沒有與jdbc關聯,這里就需要mybatis來關聯我們的映射文件

在全局配置文件中添加

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

就實現了映射文件的配置

mappers可以添加多個mapper那就意味着可以用這一個配置文件關聯多個映射文件

9.用mybatis來實現查詢數據庫

在com.dongline.mybatistest下新建一個測試類Test.java

package com.dongline.mybatistest;

import java.io.IOException;
import java.io.InputStream;

import javax.annotation.Resource;

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 Exception {
        
        String resource="config/mybatisconfig.xml";
        InputStream in= Resources.getResourceAsStream(resource);
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);
        SqlSession session=factory.openSession();
        Person person=session.selectOne("test.findPersonByName","dong");
        System.out.println(person);
    
session.close();
} }

這里通過Resources.getResourceAsStream(resource)獲取resource輸入流

再獲取SqlSessionFactory,這個是會話工廠。

建立我們的會話 session,

通過會話session中的增刪改查關聯我們映射文件中配置的id就能調用我們的sql語句了。

執行結果如下

 

第一次寫blog有什么不足請大家指出。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM