1. 新建项目
2. 导入mybatis所需jar包
核心包:mybatis-3.2.7.jar
3. 类路径下创建mybatis全局配置文件sqlMapConfig.xml(配置数据源、事务、mapper映射文件等信息)
<?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>
<!-- 获取数据库配置信息db.properties -->
<properties resource="db.properties"></properties>
<!-- 项目环境 -->
<environments default="development">
<environment id="development">
<!-- 事务管理 -->
<transactionManager type="JDBC"/>
<!-- 数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 映射文件 -->
<mappers>
<mapper resource="com/neuedu/dao/EmpMapper.xml"/>
</mappers>
</configuration>
4. dao包下创建EmpMapper.xml映射文件(配置增、删、改、查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="test">
<!--
<select> : 定义查询select语句
id: 唯一标识符
parameterType:参数类型
resultType:返回值类型
#{}:占位符,类似于preparedStatement中的"?"占位符,当仅包含一个参数时,占位符中的名称可自定义
-->
<select id="selectEmpByEmpno" parameterType="int" resultType="com.neuedu.model.Emp">
select * from emp where empno=#{empno}
</select>
<!--
<insert>:定义新增insert语句
id: 唯一标识符
parameterType:参数类型
默认返回值:影响行数
-->
<insert id="insertEmp" parameterType="com.neuedu.model.Emp">
insert into emp(empno,ename,job) values(SEQ_EMP.NEXTVAL,#{ename},#{job})
<!-- 返回主键值: 将当前获取的序列值注入到参数emp对象的empno属性中 -->
<selectKey keyProperty="empno" order="AFTER" resultType="int">
select SEQ_EMP.Currval from dual
</selectKey>
</insert>
<!--
<update>:定义更新update语句
默认返回值:影响行数
-->
<update id="updateEmp" parameterType="com.neuedu.model.Emp">
update emp set ename=#{ename},job=#{job} where empno=#{empno}
</update>
<!--
<delete>:定义删除delete语句
默认返回值:影响行数
-->
<delete id="deleteEmpByEmpno" parameterType="int">
delete from emp where empno=#{empno}
</delete>
</mapper>
5. dao层在相应的IMPL中定义对应的增删改查方法,并利用XML进行操作
//1.加载全局配置文件
//FileInputStream input = new FileInputStream("src/sqlMapConfig.xml");
InputStream input = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.获取SqlSessionFactory对象
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(input);
//3.获取SqlSession接口,实现增、删、改、查
SqlSession session = ssf.openSession();
//4.执行增删改查
Emp emp = (Emp)session.selectOne("selectEmpByEmpno",empno);//selectEmpByEmpno mapper文件中对应待执行语句的id属性值
//int result = session.insert("insertEmp", emp);//执行新增
//int result = session.update("updateEmp", emp);//执行更新
//int result = session.delete("deleteEmpByEmpno", empno);//执行删除
//5.提交事务----------------(增、删、改必须手动提交事务,查询不需要)---------------------------
//session.commit();
//6.关闭资源
session.close();
6.Test类测试:
public class Test {
public static void main(String[] args) throws FileNotFoundException {
IEmpDao dao = new EmpDaoImpl();
//查询
//Emp emp = dao.selectEmpByEmpno(6666);
//System.out.println(emp);
//新增
Emp temp = new Emp();
temp.setEname("tom");
temp.setJob("程序员");
//boolean result = dao.insertEmp(temp);
//System.out.println("处理结果:" + result +" 当前用户的主键empno=" + temp.getEmpno());
//修改
Emp temp2 = new Emp();
temp2.setEname("tomtom");
temp2.setJob("猿(媛)");
temp2.setEmpno(24);
//boolean result2 = dao.updateEmp(temp2);
//System.out.println("处理结果:" + result2);
//删除
boolean result3 = dao.deleteEmp(24);
System.out.println("处理结果:" + result3);
}
}