## 利用mybatis程序檢索出數據庫中的數據
創建一個任何程序一般需要經過的4個步驟:1(搭建環境)2(倒入jar包) 3(寫代碼)4(測試),mybatis也不例外…
什麼是 MyBatis?
準備工作:
中文文檔-- https://mybatis.org/mybatis-3/zh/getting-started.html
GitHub-- https://github.com/search?q=mybatis
百度百科
MyBatis 是一款優秀的持久層框架,
它支持定製化 SQL、存儲過程以及高級映射。
MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。
MyBatis 可以使用簡單的 XML 或註解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)爲數據庫中的記錄。
創建第一個mybatis程序
1.新建一個Maven項目
2.刪除src
3.在父工程的Pom.xml中倒入Maven依賴
<!--倒入依賴-->
<!--倒入mysql驅動-->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--倒入mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!--倒入測試單元junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
2創建一個子模塊---------(mybatis01)
(1)編寫mybatis的核心配置文件 —mybatis01下 src/main/resources目錄下創建mybatis-config.xml文件–>編寫mybatis核心配置文件
<!--configuration核心配置文件-->
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis>useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
</configuration>
(2)編寫mybatis工具類—獲取數據庫連接對象
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory = null;
static{//這個類一旦加載就執行此代碼
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}catch(Exception e){
e.printStackTrace();
}
}
//獲得sqlSession
public static SqlSession getSqlSession(){
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
(3)實體類—和數據庫中數據對應的實體類
package com.xcc.dao.pojo;
public class Emp {
private int id;
private String ename;
private int age;
private String sex;
private double sal;
private String birthday;
private String edate;
@Override
public String toString() {
return "emp{" +
"id=" + id +
", ename='" + ename + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", sal=" + sal +
", birthday='" + birthday + '\'' +
", edate='" + edate + '\'' +
'}';
}
public Emp() {
}
public Emp(int id, String ename, int age, String sex, double sal, String birthday, String edate) {
this.id = id;
this.ename = ename;
this.age = age;
this.sex = sex;
this.sal = sal;
this.birthday = birthday;
this.edate = edate;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public double getSal() {
return sal;
}
public void setSal(double sal) {
this.sal = sal;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getEdate() {
return edate;
}
public void setEdate(String edate) {
this.edate = edate;
}
}
(4)接口
package com.xcc.dao;
import com.xcc.dao.pojo.*;
import java.util.List;
public interface EmpDao {
public List<Emp> getEmpList();
}
(5)接口實現類有之前的EmpDaoImpl類變成了現在的EmpMapper.xml (新建一個與實體類名字相對應的xxxMapper.xml) 執行sql語句步驟變的很簡單,不用由手動寫JDBC連接數據庫的代碼,mybaits幫我們封裝好了
<?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="com.xcc.dao.EmpDao">
<select id="getEmpList" resultType="com.xcc.dao.pojo.Emp">
select * from txweb.t_emp;
</select>
</mapper>
3.編寫測試代碼
package com.xcc.dao;
import com.xcc.dao.pojo.Emp;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import utils.MybatisUtils;
import java.util.List;
public class EmpDaoTest {
@Test
public void Test(){
//獲得sqlSession對象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//方式一:getMapper
EmpDao mapper = sqlSession.getMapper(EmpDao.class);
List<Emp> empList = mapper.getEmpList();
for (Emp emp : empList) {
System.out.println(emp);
}
//第二種方式
//關閉數據庫連接
sqlSession.close();
}
}
4.常看到的錯誤 org.apache.ibatis.binding.BindingException: Type interface com.xcc.dao.EmpDao is not known to the MapperRegistry.
MapperRegistry: 這是mybatis的核心配置文件缺少