天天看點

Mybatis入門---實作增删改查

在Eclipse中建立好java項目及配置好路徑後,通過一個使用者管理案例在mybatis架構中實作增删改查功能。

一.資料庫準備

首先我們需準備好資料庫所需的表,我們建立一個名為eshop的資料庫,在其中創造一張名為user_info的表,在此表中建立一些字段如·id,userName。适當在此表中添加一些資料。

Mybatis入門---實作增删改查

二.建立工程目錄結構

在src檔案夾下建立三個包

com.mybatis.pojo(存放實體類)

com.mybatis.mapper(該包下建立一個UserInfoMapper.xml檔案,SQL映射檔案)

com.mybatis.test(測試主程式)。

在src同級創造一個mybatis-config.xml檔案(資料庫連接配接池配置檔案)。

Mybatis入門---實作增删改查

三.實作使用者查詢

這裡希望通過輸入使用者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。