MyBatis接口绑定方案
Myabtis中,提供了一套接口绑定方案,程序员可以提供一个接口,然后提供一个与接口所对应的mapper.xml文件Myabaits会自动讲接口与xml文件进行绑定。实际上就是Mybatis互根据接口和对应的xml文件创建一个接口的实现类,换言之,就是可以得到接口类型的一个对象,方便方法的调用
项目结构:
一、核心配置文件
此处有优化:
-
别名配置 (默认设置包下所有pojo的别名)
-
扫描多个接口,可以简化配置,使用package标签,表示扫描对应包下的所有接口
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:XE
username=SCOTT
password=TIGER
<?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>
<!--配置数据库参数配置文件-->
<properties resource="db.properties" />
<!--别名配置: 不区分大小写-->
<typeAliases>
<!-- <typeAlias type="com.xxxx.pojo.Emp"/>--> <!--如果 alias="emp"属性省略,默认别名为类名,不区分大小写-->
<package name="com.xxxx.pojo"/> <!--配置整个包下的所有类型别名默认为类名,不区分大小写-->
</typeAliases>
<!--环境选择-->
<environments default="ev">
<environment id="ev">
<!--事务管理机制-->
<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标签的class属性 -->
<mapper class="com.xxxx.mappers.EmpMapper"/>
<!--扫描多个接口,可以简化配置,使用package标签,表示扫描对应包下的所有接口-->
<package name="com.xxxx.mappers"/> <!--当前包下的所有接口-->
</mappers>
</configuration>
二、工具类 和 pojo
package com.xxxx.utils;
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 java.io.IOException;
/*
封装获取回话的工具类->静态
*/
public class SessionUtils {
//回话工厂 单例
private static SqlSessionFactory factory = null;
static{
try {
factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
//获取回话
public static SqlSession getSession(){
SqlSession session = null;
if(factory!=null){
session = factory.openSession(true); //参数true->自动提交 默认为false手动提交
}
return session;
}
}
package com.xxxx.pojo;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
public class Emp implements Serializable {
private int empno;
private String ename;
private String job;
private int mgr;
private double sal;
private double comm;
private Date hiredate;
private Integer deptno;
public Emp() {
}
public Emp(int empno, String name, String job, int mgr, double sal, double comm, Date hiredate, Integer deptno) {
this.empno = empno;
this.ename = name;
this.job = job;
this.mgr = mgr;
this.sal = sal;
this.comm = comm;
this.hiredate = hiredate;
this.deptno = deptno;
}
public int getEmpno() {
return empno;
}
public void setEmpno(int empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String name) {
this.ename = name;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public int getMgr()