在Eclipse中建立好java項目及配置好路徑後,通過一個使用者管理案例在mybatis架構中實作增删改查功能。
一.資料庫準備
首先我們需準備好資料庫所需的表,我們建立一個名為eshop的資料庫,在其中創造一張名為user_info的表,在此表中建立一些字段如·id,userName。适當在此表中添加一些資料。
二.建立工程目錄結構
在src檔案夾下建立三個包
com.mybatis.pojo(存放實體類)
com.mybatis.mapper(該包下建立一個UserInfoMapper.xml檔案,SQL映射檔案)
com.mybatis.test(測試主程式)。
在src同級創造一個mybatis-config.xml檔案(資料庫連接配接池配置檔案)。
三.實作使用者查詢
這裡希望通過輸入使用者id查詢到eshop資料庫user_info表中存儲的使用者資訊。
(1)建立實體類
首先在com.mybatis.pojo包中建立一個實體類UserInfo.java(對應user_info表),注意UserInfo類中的屬性要與user_info表中的字段相同。并建立屬性的getter setter方法。
package com.mybatis.pojo
public class UserInfo {
private int id;
private String userName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "UserInfo [id=" + id + ", userName=" + userName + "]";
}
}
(2)建立SQL映射的XML檔案
在com.mybatis.mapper包下建立SQL的映射XML檔案UserInfoMapper.xml,内容如下:
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.mapper.UserInfoMapper">
<!-- 查詢使用者 -->
<select id="findUserInfoById" resultType="com.mybatis.pojo.UserInfo">
select * from user_info where id=#{id}
</select>
</mapper>
mapper檔案需遵循mybatis-3-dtd檔案規範,可在官方檔案中查找。
其中以作為根節點
namespace:命名空間,做sql隔離
id:sql語句唯一辨別
parameterType:指定傳入參數類型(pojo類中對應的類型,不是資料庫中的類型)
resultType:傳回結果集類型,如傳回UserInfo類型需填寫其路徑。
#{}:占位符,如果傳入的類型是基本類型(string,long,double,int,boolean,float等),那麼#{}中變量名稱可以任意
(3)建立Mybatis的核心配置檔案
之前建立的mybatis-config.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>
<!-- 給包中的類注冊别名 -->
<typeAliases>
<package name="com.mybatis.pojo"></package>
</typeAliases>
<!-- 配置環境 -->
<environments default="mysql">
<!--配置一個id為mysql的環境-->
<environment id="mysql">
<!--使用JDBC事務-->
<transactionManager type="JDBC"></transactionManager>
<!--資料庫連接配接池-->
<dataSource type="POOLED">
<!--資料庫驅動資訊-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--資料庫連接配接位址-->
<property name="url" value="jdbc:mysql://localhost:3306/eshop"/>
<!--資料庫使用者名-->
<property name="username" value="root"/>
<!--資料庫密碼-->
<property name="password" value="19991014"/>
</dataSource>
</environment>
</environments>
<!-- 引用映射檔案 -->
<mappers>
<mapper resource="com/mybatis/mapper/UserInfoMapper.xml"/>
</mappers>
</configuration>
此檔案需遵循mybatis-3-config.dtd檔案規範。
(4)建立測試類
在com.mybatis.test包中建立MybatisTest測試類,代碼如下:
package com.mybatis.test;
import java.io.IOException;
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 com.mybatis.pojo.*;
public class MybatisTest {
public void find() throws IOException{
//讀取mybatis配置檔案,并且得到配置檔案流
InputStream stream= Resources.getResourceAsStream("mybatis-config.xml");
//根據配置檔案流,建立會話工廠
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(stream);
//通過會話工廠得到SqlSession
SqlSession session=factory.openSession();
//查詢id為1的使用者資訊
UserInfo u=session.selectOne("com.mybatis.mapper.UserInfoMapper.findUserInfoById",1);
//列印查詢結果
System.out.println(u.toString());
}
public static void main(String[] args) throws IOException {
// TODO 自動生成的方法存根
MybatisTest m=new MybatisTest();
m.find();
}
}
調用SqlSession對象的selectOne方法的第一個參數是映射檔案UserInfoMapper.xml中定義的元素的id。