mybatis(2)--配置mybatis實現連接數據庫查詢


1.新建項目

2.在src下創建一個xml文件 比如這xml文件名為 mybatis.xml

  一下為初始xml文件代碼

<?xml version="1.0" encoding="UTF-8" ?>
<!-- mybatis核心配置文件的dtd -->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 引用jdbc配置文件  該配置文件為連接數據庫的數據參數 -->
    <properties resource="jdbc.properties" />
    <!--環境配置,配置的是開發者模式  -->
    <environments default="development">
        <environment id="development">
            <!-- 聲明jdbc事務處理 -->
            <transactionManager type="JDBC"/>
            <!-- 數據源:數據庫連接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClassName}"/>
                <property name="url" value="${jdbc.driverUrl}"/>
                <property name="username" value="${jdbc.user}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- 引用Mapper接口的sql映射文件 -->
        <mapper resource="com/ht/mapper/EmpDAO.xml"/> 
    </mappers>
</configuration>

3. 創建接口類 這里設 接口類是:com.ht.mapper.EmpDAO.class

package com.ht.mapper;

import java.util.List;

import com.ht.vo.EmpVo;

//接口名稱必須與對應的XML文件名相同,並且必須在同一個包中
public interface EmpDAO {
    /**
     * 獲取所有的員工信息
     * @return EmpVo集合
     * 
     * 方法名稱對應xml中的id名稱
     */
    List<EmpVo> listAll();

}

  

4. 在創建接口類的映射文件 EmpDAO.xml 

<?xml version="1.0" encoding="UTF-8" ?>
<!-- mybatis的dtd文件 -->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace屬性: 用於指定指向那個接口 -->
<mapper namespace="com.ht.mapper.EmpDAO">
	<!--select標簽都對應接口中的一個方法, 
		id屬性:指定接口中具體的方法名,
		id屬性值必須唯一   
		resultType:執行sql返回的結果類型
		xml的文件名稱必須與接口名稱相同,並且必須在同一個包中
	-->
    <select id="listAll" resultType="com.ht.vo.EmpVo">
      <!--格式化sql語句的標簽  -->
      <![CDATA[
        select * from Emp
      ]]>
    </select>
</mapper> 

 

  此文件在 mybatis.xml中配置如下: 

 <mappers>
    <mapper resource="com/ht/mapper/EmpDAO.xml"/> 
  </mappers>

5. 后台實現接口類

package com.ht.action;

import java.util.List;
import javax.sql.DataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import com.ht.base.DataSourceFactory;
import com.ht.mapper.EmpDAO;
import com.ht.vo.EmpVo;

public class MybatisJava {

  public static void main(String[] args) {
    //調用自定義的DataSource工廠獲取數據源
    DataSource dataSource = DataSourceFactory.getDataSource();
    // 新建MyBatis提供的JDBC事務工廠
    TransactionFactory transactionFactory = new JdbcTransactionFactory();
    // 創建MyBatis的Environment環境對象(模式:開發者模式,事務,數據源)
    Environment environment = new Environment("development", transactionFactory, dataSource);
    // 由環境對象構建出MyBatis的Configuration配置對象
    Configuration configuration = new Configuration(environment);
    // 把映射器接口添加到配置對象中,讓MyBatis可以正常找到映射接口
    configuration.addMapper(EmpDAO.class);
    // 由SqlSessionFactoryBuilder和configuration配置對象獲取SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
    // 由sqlSessionFactory打開連接獲取SqlSession
    SqlSession sqlSession = sqlSessionFactory.openSession();
    // 由SqlSession獲取映射器接口EmpDAO
    EmpDAO empDAO = sqlSession.getMapper(EmpDAO.class);
    // 映射器接口調用方法,執行指定的SQL語句EmpVo
    List<EmpVo> empList = empDAO.listAll();
    //遍歷集合
     if (empList != null && empList.size() > 0) {
       for (EmpVo emp : empList) {
        System.out.println(emp);
       }
     }
  }

}

兩種方法獲取數據源:

 1.自定義的DataSource工廠獲取數據源

package com.ht.base;

import org.apache.ibatis.datasource.pooled.PooledDataSource;
import javax.sql.DataSource;

public class DataSourceFactory {
	//創建數據庫連接池
    public static DataSource getDataSource() {
        //數據庫驅動
        String driver = "com.mysql.jdbc.Driver"; 
        //uri地址    
        String url = "jdbc:mysql://localhost:3306/mybatis";
        //數據庫用戶名
        String username = "";
        //數據庫密碼
        String password = "1234";
        return new PooledDataSource(driver, url, username, password);
    }

}
        

  2.讀取mybatis.xml獲取數據源

package com.ht.base;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

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

/**
 * SqlSessionFactory工具類
 * @author Steven
 *
 */
public class SqlSessionFactoryUtils {

	private static SqlSessionFactory sqlSessionFactory;
	static {
		
		try {
			// 創建SqlSessionFactoryBuilder對象

			SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
			// 創建核心配置文件的輸入流
			InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
			// 通過輸入流創建SqlSessionFactory對象
			sqlSessionFactory = ssfb.build(inputStream);
//			new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

	/**
	 * 獲取SqlSessionFactory
	 * @return
	 */
	public static SqlSessionFactory getSqlSessionFactory() {
		return sqlSessionFactory;
	}
}

  


免責聲明!

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



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