一、建立項目和資料庫
項目名稱:mybatis092901
資料庫名稱:mybatis0929
表名稱:dept
CREATE TABLE `dept` (
`deptNo` int(11) NOT NULL,
`deptName` varchar(30) DEFAULT NULL,
`location` varchar(30) DEFAULT NULL,
PRIMARY KEY (`deptNo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表名稱:emp
CREATE TABLE `emp` (
`empno` int(11) NOT NULL,
`ename` varchar(30) DEFAULT NULL,
`hiredate` date DEFAULT NULL,
`job` varchar(30) DEFAULT NULL,
`sal` double DEFAULT NULL,
`mgr` varchar(30) DEFAULT NULL,
`comm` varchar(30) DEFAULT NULL,
`deptno` int(11) DEFAULT NULL,
PRIMARY KEY (`empno`)
二、添加jar包
1.在項目上建立lib目錄
/lib
2.在lib目錄下添加jar
junit-4.10.jar
mybatis-3.2.2.jar
mysql-connector-java-5.1.10-bin.jar
三、添加配置檔案
1.在項目上建立conf目錄
/conf
2.在conf目錄下添加配置檔案
配置檔案名稱: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>
<typeAliases>
<typeAlias alias="Emp" type="cn.jbit.mybatis092901.domain.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/mybatis0929"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
四、建立實體類
1.在src目錄下建立包
包名:cn.jbit.mybatis092901.domain
2.在包下建立實體類
類名:Dept.java
内容:
public class Dept implements Serializable {
private Integer deptNo;//部門編号
private String deptName;//部門名稱
private String location;//部門位址
//省略get and set
}
類名:Emp.java
public class Emp implements Serializable {
//員工姓名
private String empName;
//員工編号
private Integer empNo;
//員工入職時間
private Date hireDate;
//員工職位
private String job;
//員工工資
private Double salary;
//經理編号
private Integer mgr;
//獎金
private Double comm;
//部門編号
private Integer deptNo;
五、持久層設計
1.接口設計
1).在src目錄建立包
包名:cn.jbit.mybatis092901.dao
2).在包下建立接口
接口名:IEmpDao.java
接口中内容:
public interface IEmpDao {
/**
* 使用where
* @param emp
* @return
*/
public List<Emp> findEmpByExampleWhere(Emp emp);
}
六、添加相關映射檔案
1.在conf下添加配置檔案
映射檔案名稱:EmpDaoMapper.xml
映射檔案内容:
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.jbit.mybatis092901.dao.IEmpDao">
<resultMap id="empResultMap" type="cn.jbit.mybatis092901.domain.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" />
<result property="comm" column="comm" />
</resultMap>
<!--
使用where進行動态Sql拼接
-->
<select id="findEmpByExampleWhere" parameterType="Emp" resultMap="empResultMap">
SELECT * FROM EMP
<where>
<if test ="deptNo != null">
and deptno= #{deptNo}
</if>
<if test ="empName != null">
and ename like #{empName}
</where>
</select>
</mapper>
七.持久層實作類設計
1).在src目錄下建立包
包名:cn.jbit.mybatis092901.dao.impl
2).在包下建立實作類
實作類名:EmpDaoImpl.java
實作類中的内容:
/**
* 為了使用代碼看起來清晰,SqlSession的擷取都使用工具類
*/
@Override
public void insertEmp(Emp emp) {
String resource = "mybatis-config.xml";
Reader reader = null;
SqlSessionFactory factory = null;
SqlSession session = null;
try {
reader = Resources.getResourceAsReader(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
factory = builder.build(reader);
session = factory.openSession();
List<Emp> empList = new ArrayList();
empList = session.selectList("cn.jbit.mybatis092901.dao.IEmpDao.findEmpByExampleIf",emp);
} catch (Exception e1) {
e1.printStackTrace();
}finally {
session.close();
}
八、在配置檔案中添加映射檔案引用
1.在mybatis-fonfig.xml檔案中添加mapper
<mappers>
<mapper resource="EmpDaoMapper.xml"/>
</mappers>
九、測試操作
1.在項目中建立test目錄
/test
2.在test目錄下建立包
cn.jbit.mybatis092901.dao
3.在包下建立測試類
類名:EmpDaoTest.java
public class EmpDaoTest {
//員工類的持久層實作
private static IEmpDao empDao = new EmpDaoImpl();
* 測試where
@Test
public void testwhere(){
Emp emp = new Emp();
emp.setDeptNo(9);
emp.setEmpName("張平U");
List<Emp> emps = empDao.findEmpByExampleWhere(emp);
printEmpList(emps);
}
private void printEmpList(List<Emp> empList){
for(Emp emp:empList){
printEmp(emp);
本文轉自 素顔豬 51CTO部落格,原文連結:http://blog.51cto.com/suyanzhu/1559319