MyBatis使用

定義:java

MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。web

使用方法:數據庫

1.導入jar包mybatis和oracle數據庫鏈接包apache

2.配置mybatis.xml文件tomcat

 

<?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>
  <!-- 引入外部屬性文件 -->
  <properties resource=""></properties>
  
  <!-- 定義一個別名,名字通常爲java項目中包的名稱  -->
  <typeAliases>
      <package name=""/>
  </typeAliases>
  
  <!-- mybatis的環境 -->
  <environments default="">
      <environment id="">
          <!-- mybatis支持的事務 -->
          <!-- JDBC:數據源本身的事務管理 
               MANAGE(託管): 不支持tomcat,通常用在大型商業服務器,如:weblogic,jboss -->
          
          <transactionManager type=""></transactionManager>
          
          <!-- 數據鏈接類型:POOLED,UNPOOLED,JNDI使用應用服務器的數據源鏈接 -->
          <!-- POOLED:鏈接池 -->
          <dataSource type="POOLED">
              <property name="driver" value="${driver}"/>
              <property name="url" value="${url}"/>
              <property name="username" value="${username}"/>
              <property name="password" value="${password}"/>
          </dataSource>
      </environment>
  </environments>
  <!--類的映射xml-->
  <mappers>
      <mapper resource=""/>
  </mappers>
</configuration>

 

3.載入mybatis.xml配置服務器

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

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 MyBatisUtil {
    private static SqlSessionFactory ssf;
    private static SqlSession ss;
    public static SqlSession getSqlSession() {
        InputStream in = null;
        //Reader reader = null;也可用此行和下方被註釋的代碼來載入xml
        try {
            in = Resources.getResourceAsStream("mybatis.xml");
            //reader = Resources.getResourceAsReader("mybatis.xml");
            ssf = new SqlSessionFactoryBuilder().build(in);
            ss = ssf.openSession();
            in.close();
        } catch (IOException e) {
            
            e.printStackTrace();
        }
        return ss;
    }    
}

 

實例:使用MyBatis完成數據庫表的增刪改查session

1.導入jar包,鏈接oracle數據庫,配置mabatis.xml文件,載入mabatis.xml配置mybatis

db.properties:鏈接oracle所需的各項屬性oracle

 

driver=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
username=db
password=123

 

mybatis.xml配置app

<?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>
  <!-- 引入外部屬性文件 -->
  <properties resource="db.properties"></properties>
  
  <!-- 定義一個別名  -->
  <typeAliases>
      <package name="maya.model"/>
  </typeAliases>
  
  <!-- mybatis的環境 -->
  <environments default="development">
      <environment id="development">
          <!-- mybatis支持的事務 -->
          <!-- JDBC:數據源本身的事務管理 
               MANAGE(託管): 不支持tomcat,通常用在大型商業服務器,如:weblogic,jboss -->
          
          <transactionManager type="JDBC"></transactionManager>
          
          <!-- 數據鏈接類型:POOLED,UNPOOLED,JNDI使用應用服務器的數據源鏈接 -->
          <!-- POOLED:鏈接池 -->
          <dataSource type="POOLED">
              <property name="driver" value="${driver}"/>
              <property name="url" value="${url}"/>
              <property name="username" value="${username}"/>
              <property name="password" value="${password}"/>
          </dataSource>
      </environment>
  </environments>
  
  <mappers>
      <mapper resource="maya/dao/TUsersMapper.xml"/>
  </mappers>
</configuration>

導入mybatis.xml配置

package maya.util;

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

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 MyBatisUtil {
    private static SqlSessionFactory ssf;
    private static SqlSession ss;
    public static SqlSession getSqlSession() {
        InputStream in = null;
        //Reader reader = null;也可用此行和下方被註釋的代碼來載入xml配置
        try {
            in = Resources.getResourceAsStream("mybatis.xml");
            //reader = Resources.getResourceAsReader("mybatis.xml");
            ssf = new SqlSessionFactoryBuilder().build(in);
            ss = ssf.openSession();
            in.close();
        } catch (IOException e) {            
            e.printStackTrace();
        }
        return ss;
    }    
}

2.創建實體類,可用hibernate逆向生成

package maya.model;

public class TUsers {
    private int id;
    private String users;
    private String password;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsers() {
        return users;
    }
    public void setUsers(String users) {
        this.users = users;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "TUsers [id="+id+",users="+users+", password="+password+"]";
    }
}

3.實體類的映射配置和JUnit測試用例

實體類映射配置(TUsersMapper.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">
  
 <mapper namespace="maya.dao.TUsersMapper">
     <resultMap type="tUsers" id="users"></resultMap>
     <!-- 查詢全部 -->
     <select id="list" resultType="maya.model.TUsers">
         select * from t_users
     </select>
     
     <!-- 新增 -->
     <insert id="addUser" parameterType="tUsers">
         insert into t_users values(sq_mybatis.nextval,#{users},#{password})
     </insert>
     <!-- 修改 -->
     <update id="updateUser" parameterType="tUsers">
         update t_users t set t.users=#{users},
         t.password=#{password} where t.id=#{id} 
     </update>
     <!-- 刪除 -->
     <delete id="deleteUser" parameterType="Integer" >
         delete t_users t where t.id=#{id}
     </delete>
     <!-- 條件查詢 -->
     <select id="selectByMap" parameterType="tUsers" resultMap="users">
         select * from t_users t where t.users like #{p1} and t.password like #{p2}
     </select>
     
 </mapper>
  

JUnit測試用例(JTest.java)

package maya.util;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import maya.model.TUsers;

public class JTest {
    
    private SqlSession ss;

    
    public void test() {
        List<TUsers> list = ss.selectList("maya.dao.TUsersMapper.list");
        for (TUsers u : list) {
            System.out.println(u);
        }
    }
    
    public void add() {
        TUsers tu = new TUsers();
        tu.setId(6);
        tu.setUsers("劉禪");
        tu.setPassword("123");
        int n = ss.insert("maya.dao.TUsersMapper.addUser",tu);
        
        System.out.println(n);
    }
    
    public void update() {
        TUsers tu = new TUsers();
        tu.setId(5);
        tu.setUsers("劉後主");
        tu.setPassword("321");
        int n = ss.update("maya.dao.TUsersMapper.updateUser",tu);
        System.out.println(n);
    }
    
    public void delete() {
        int n = ss.delete("maya.dao.TUsersMapper.deleteUser",6);
        System.out.println(n);
    }
    @Test
    public void selectUsersByMap() {
        Map<String, Object> map = new HashMap<String, Object>();
     //查找姓劉的,密碼有2的用戶
        map.put("p1", "劉%");
        map.put("p2", "%2%");
     //方法指向maya.dao.TUsersMapper.xml中maya.dao.TUsersMapper的映射,id爲selectByMap的方法,並把參數map傳過去
        List<TUsers> list = ss.selectList("maya.dao.TUsersMapper.selectByMap",map);
        for (TUsers tu : list) {
            System.out.println(tu);
        }            
    }        
    
    
    @Before//在test以前執行
    public  void setUpBeforeClass() throws Exception {
        ss = MyBatisUtil.getSqlSession();
    }

    @After//在test以後執行
    public  void tearDownAfterClass() throws Exception {
        ss.commit();
    }
}

執行結果:

TUsers [id=5,users=劉後主, password=321]
TUsers [id=2,users=劉備, password=123]

 

對照一下數據庫表:

相關文章
相關標籤/搜索