第一次學習使用Mybatis框架進行開發,希望將自己的學習心得記錄下來,同大家分享。
使用Mybatis做開發的流程:
1. 下載Mybatis.jar包
2. 部署jat包
3. 編寫Mybatis配置文件
4. 創建實體類和數據庫接口
5. 創建SQL映射文件
6. 創建數據庫接口的實現類
7. 編寫測試類進行測試
接下來通過實際的簡單項目操作進行展示。
最後完成的小項目的目錄夾如下圖:
第一步,下載Mybatis的jar包。我上傳在我的服務器上,地址是:點擊下載
第二步,新建eclipse項目,下載完的jar導入到項目中的lib文件夾中,右擊jar包–>build path–>add to build path
第三步,編寫Mybatis配置文件,即mybatis-config.xml文件。
<?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>
<!--簡化代碼,使用Emp代替com.entity.Emp類,在EmpDaoMapper的映射文件中,代碼將快捷乾淨很多 -->
<typeAliases>
<typeAlias alias="Emp" type="com.entity.Emp" />
</typeAliases>
<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/emp?characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 註冊EmpDaoMapper.xml文件,EmpDaoMapper.xml位於com.dao這個包下,所以resource寫成com/dao/EmpDaoMapper.xml-->
<mappers>
<mapper resource="com/dao/EmpDaoMapper.xml" />
</mappers>
</configuration>
第四步,創建實體類和數據庫接口
1.數據庫創建新的數據庫,創建表emp,設置相關的字段並插入值
CREATE TABLE emp(
empno INT,
ename VARCHAR(50),
job VARCHAR(50),
mgr INT,
hiredate DATE,
sal DECIMAL(7,2),
comm DECIMAL(7,2),
deptno INT
) ;
INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);
2.創建與數據表emp對應的實體類
package com.entity;
import java.util.Date;
public class Emp {
private Integer empno;
private String empName;
private Date hireDate;
private String job;
private Double salary;
private Integer mgr;
private Double comm;
private Integer deptNo;
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Date getHireDate() {
return hireDate;
}
public void setHireDate(Date hireDate) {
this.hireDate = hireDate;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public Integer getMgr() {
return mgr;
}
public void setMgr(Integer mgr) {
this.mgr = mgr;
}
public Double getComm() {
return comm;
}
public void setComm(Double comm) {
this.comm = comm;
}
public Integer getDeptNo() {
return deptNo;
}
public void setDeptNo(Integer deptNo) {
this.deptNo = deptNo;
}
}
3.創建數據庫接口
package com.dao;
import java.util.List;
import com.entity.Emp;
public interface IEmpDao {
//創建全選數據庫的數據,返回值類型是以List儲存的Emp對象的集合
public List<Emp> selectAll();
}
第五步,創建SQL映射文件
<?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,namespace的值習慣上設置成包名+sql映射文件名,這樣就能夠保證namespace的值是唯一的 -->
<mapper namespace="com.dao.IEmpDao">
<!-- 優化代碼映射管理,一次設置,下面可優化重複使用 -->
<resultMap id="empResultMap" type="com.entity.Emp">
<id property="empno" column="empno" />
<result property="empName" column="ename" />
<result property="hireDate" column="hiredate" />
<result property="job" column="job" />
<result property="salary" column="sal" />
<!-- 別名儲存數據,數據庫取出的數據爲column欄目命名,根據部分在實體類中的命名進行對應 -->
<result property="comm" column="comm" />
<result property="mgr" column="mgr" />
<result property="deptNo" column="deptno" />
</resultMap>
<!-- 在select標籤中編寫查詢的SQL語句, 設置select標籤的id屬性爲selectAll,id屬性值必須是唯一的,不能夠重複;使用parameterType屬性指明查詢時使用的參數類型,resultType屬性指明查詢返回的結果集類型, resultType="empResultMap"就表示將查詢結果封裝成一個emp類的對象返回emp類就是emp表所對應的實體類 -->
<select id="selectAll" resultType="Emp" resultMap="empResultMap">
SELECT * FROM
EMP
</select>
</mapper>
第六步,創建數據庫接口的實現類
package impl;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
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.dao.IEmpDao;
import com.entity.Emp;
public class EmpDaoImpl implements IEmpDao {
//繼承,實現具體操作
@Override
public List<Emp> selectAll() {
//加載配置文件,創建session倉庫,可以在熟練掌握之後進行代碼的封裝,優化代碼,實現重用
String resource = "mybatis-config.xml";
Reader reader = null;
SqlSessionFactory factory = null;
SqlSession session = null;
List<Emp> list = new ArrayList<Emp>();
try {
reader = Resources.getResourceAsReader(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
factory = builder.build(reader);
session = factory.openSession();
//執行操作,對應映射文件具體的id--selectAll
//session.後的方法有selectOne,insert等,對應不同的數據操作,如果是對數據原本數據有影響的操作,需要之後加上session.commit();
list = session.selectList("com.dao.IEmpDao.selectAll");
} catch (IOException e1) {
e1.printStackTrace();
} finally {
session.close();
}
return list;
}
}
第七布,測試顯示類
package test;
import java.util.Date;
import java.util.List;
import com.dao.IEmpDao;
import com.entity.Emp;
import impl.EmpDaoImpl;
public class testMybatis {
public static void main(String[] args) {
IEmpDao empDao = new EmpDaoImpl();
List<Emp> list = empDao.selectAll();
System.out.println("全部的員工信息:");
for (Emp em : list) {
System.out.println("員工編號" + em.getEmpno() + " 員工姓名:" + em.getEmpName() + " 職位:" + em.getJob() + "部門:"+ em.getDeptNo());
}
System.out.println("------------------------------------");
}
}
展示臺結果:
樓主聯繫QQ:841400592。歡迎各位志同道合的朋友一起來討論學習,如果覺得還行也歡迎轉載。