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;
}
}
