聲明: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有什么不足請大家指出。