mybatis系列(一)--初識mybatis,以及mybatis的基本配置和執行
一.初識mybatis
iBATIS一詞來源於“internet”和“abatis”的組合,是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO),MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案遷移到了google code,並且改名為MyBatis ,2013年11月遷移到Github。
二.mybatis的基本配置和執行
1.準備mybatis的jar包:mybatis-3.2.8.jar
準備資料庫jar包(我用的是mysql):mysql-connector-java-3.1.12-bin.jar
2.準備mybatis的主配置檔案:mybatis-config.xml
專案架構看圖,其中jdbc.propertis為資料庫連線配置檔案
下面附上jdbc.propertis和mybatis-config.xml的程式碼
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=12345
<?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屬性指定外,還可通過url屬性指定url--> <properties resource="jdbc.properties"/> <!-- 通過package, 可以直接指定package的名字, mybatis會自動掃描你指定包下面的javabean, 並且預設設定一個別名,預設的名字為: javabean 的首字母小寫的非限定類名來作為它的別名。 也可在javabean 加上註解@Alias 來自定義別名, 例如: @Alias(user) <package name="com.dy.entity"/> --> <typeAliases> <typeAlias alias="Student" type="com.douhao.model.Student"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> <!-- 方法二: 直接配置為xml <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="1234" /> </dataSource> --> </environment> <!-- 一個environments元素下面可以配多個environment元素,可以對應不同的環境,如開發環境和 生產環境。給environment元素配置不同的id就可以實現,至於要用到哪個環境,可通過environments元素 的default屬性實現,如<environments default="development">。這時就就會執行id是development的 環境了。 --> <environment id="final"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="1234" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/douhao/mappers/StudentMapper.xml" /> </mappers> <!-- <mappers> 第一種方式:通過resource指定 <mapper resource="com/dy/dao/userDao.xml"/> 第二種方式, 通過class指定介面,進而將介面與對應的xml檔案形成對映關係 不過,使用這種方式必須保證 介面與mapper檔案同名(不區分大小寫), 我這兒介面是UserDao,那麼意味著mapper檔案為UserDao.xml <mapper class="com.dy.dao.UserDao"/> 第三種方式,直接指定包,自動掃描,與方法二同理 <package name="com.dy.dao"/> 第四種方式:通過url指定mapper檔案位置 <mapper url="file://........"/> </mappers> --> </configuration>
現在我們有了mybatis的主配置檔案,但要想執行mybatis我們還要知道兩個很關鍵的知識點
1.SqlSessionFactory 2.SqlSession
SqlSessionFactory
根據他的名字就知道,這是一個mybatis的session工廠,用來建立mybatis的核心:SqlSession
所以我們1.要通過剛剛的主配置檔案得到SqlSessionFactory。2.通過SqlSessionFactory開啟資料庫會話,獲得SqlSession
再說下SqlSession的作用:
1.向sql語句傳入引數
2.執行sql語句
3.獲取執行sql語句的結果
4.事務的控制
思路明瞭:1.通過主配置檔案拿到SqlSessionFactory 2.通過SqlSessionFactory 拿到SqlSession 來操作我們的資料庫。下面看程式碼
package com.douhao.service;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
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.douhao.model.Student;
public class StudentService {
/**
*
* @author
* @description 獲得SqlSessionFactory
* @return
* @throws IOException
* @update 2016年9月24日 下午4:21:54
*/
public SqlSessionFactory getSessionFactory() throws IOException{
//通過配置檔案獲取資料庫連線的相關資訊
Reader reader= Resources.getResourceAsReader("mybatis-config.xml");
//通過配置資訊構建SqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
return sqlSessionFactory;
}
public static void main(String[] args) {
StudentService studentService=new StudentService();
SqlSession sqlSession=null;
try {
SqlSessionFactory sqlSessionFactory=studentService.getSessionFactory();
sqlSession=sqlSessionFactory.openSession();
List<Student> list=sqlSession.selectList("student.findStudentById");//這裡配置的是StudentMapper.xml中 (namespace.元素id)
System.out.println(list.size());
for(Student s:list){
System.out.println(s.getId());
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(sqlSession!=null){
sqlSession.close();
}
}
}
}
package com.douhao.model;
public class Student {
Integer id;
String name;
String age;
public Student() {
super();
}
public Student(String name, String age) {
super();
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
<?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="student">
<select id="findStudentById" resultType="com.douhao.model.Student">
select * from t_student
</select>
</mapper>
執行main方法後查出紀錄。至此mybatis能運行了。