首先,使用 MyBatis 框架时,与使用其他框架相同,我们第一步需要配置所需环境。
1、在项目中创建lib目录,把 MyBatis 核心 jar 包以及使用数据库 MySQL Or Oracle 数据库 jar 包放到lib文件夹下,build path 添加至工程。
2、 配置核心mybatis-config.xml文件,其中,核心文件中主要使用有 environments 环境配置、属性properties、 settings、 typeAliases别名配置、 不同数据库厂商databaseIdProvider、 mappers引入映射文件等。
3、学习时我使用Oracle,练习时为了练习动态环境切换,我用到了MySQL数据库,所以,我的 mybatis-config.xml 配置一般为两个环境配置:如下代码:
其中常用属性及参数可参考官方PDF说明文档。
4、采用 properties 属性文件配置数据库驱动,我的 db.properties.xml 属性文件配置如下:
#****************Oracle*******************
orcl.driver=oracle.jdbc.OracleDriver
orcl.url=jdbc:oracle:thin:@localhost:1521:orcl
orcl.username=scott
orcl.password=tiger
#****************MySQL********************
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
mysql.username=root
mysql.password=root
5、创建实体类(以 Oracle 数据库的 emp 表为例,做一个简单的增删改查操作)
package com.aaa.entity;
/**
* @Description Emp表实体类
* @author 刘鹏博
* @version v1.0
* @date 2018-3-13
**/
public class Emp {
private Integer empno;
private String ename;
private String job;
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Emp() {
super();
}
public Emp(Integer empno, String ename, String job) {
super();
this.empno = empno;
this.ename = ename;
this.job = job;
}
@Override
public String toString() {
return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job
+ "]";
}
}
6、创建 Dao 层接口
package com.aaa.dao;
import java.util.List;
import com.aaa.entity.Emp;
/**
* @Description Emp业务接口
* @author 刘鹏博
* @version v1.0
* @date 2018-3-13
**/
public interface EmpDao {
/**
* 增加
* @param emp
* */
public void addEmp(Emp emp);
/**
* 删除
* @param empno
* */
public void deleteEmp(Integer empno);
/**
* 修改
* @param emp
* */
public void updateEmp(Emp emp);
/**
* 通过 empno 查询数据
* @param empno
* @return Emp
* */
public Emp selectEmpByEmpno(Integer empno);
/**
* 查询Emp数据
* @return List
* */
public List selectEmpAll();
}
7、配置接口的映射文件 EmpDaoMapper.xml
insert into emp values(empno = #{empno},ename = #{ename},job = #{job})
delete emp where empno = #{empno}
update emp set ename = #{ename},job = #{job} where empno = #{empno}
8、编写 MyBatisUtil 工具类,即封装 SqlSessionFactory 工厂类
package com.aaa.util;
import org.apache.ibatis.io.ResolverUtil.Test;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* @Description MyBatis工具类
* @author 刘鹏博
* @version v1.0
* @date 2018-3-13
**/
public class MyBatisUtil {
private static SqlSessionFactory factory;
static {
factory = new SqlSessionFactoryBuilder().build(Test.class
.getClassLoader().getResourceAsStream("mybatis-config.xml"));
}
/**
* 获取sqlSessionFactory
* */
public static SqlSessionFactory getFactory() {
return factory;
}
/**
* 获取sqlSession对象
* */
public static SqlSession getSession() {
return factory.openSession(true);
}
}
9、创建测试类Test
package com.aaa.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.aaa.dao.EmpDao;
import com.aaa.entity.Emp;
import com.aaa.util.MyBatisUtil;
/**
* @Description 测试类
* @author 刘鹏博
* @version v1.0
* @date 2018-3-13
**/
public class Test {
public static void main(String[] args) {
SqlSession session = MyBatisUtil.getSession();
EmpDao mapper = session.getMapper(EmpDao.class);
// 查询Emp表所有数据
List selectEmpAll = mapper.selectEmpAll();
for (Emp emp : selectEmpAll) {
System.out.println(emp);
}
}
}