我们学习一样新东西时,要首先去官网,看官方文档,Mybatis的官方文档 http://www.mybatis.org/mybatis-3/zh/getting-started.html
关键步骤:
- 1、从官网下载jar包 :https://github.com/mybatis/mybatis-3/releases
- 2、创建Mybatis的配置文件mybatis-config.xml
- 3、根据mybatis-config.xml配置文件,创建SqlSessionFactory
- 4、从SqlSessionFactory中获取SqlSession
- 5、创建相应的数据库实体类及相应的接口
- 6、映射文件的配置(用于配置SQL语句)
- 7、操作相关的方法对数据库数据进行增删改查
根据上面的步骤,我们下面就来看看详细步骤如何实现。
配置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>
<!-- 引入连接数据库配置文件 -->
<properties resource="dbconfig.properties" />
<environments default="development">
<!-- 开发环境 -->
<environment id="development">
<!-- 事物管理 -->
<transactionManager type="JDBC"/>
<!-- 连接数据库的数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- mappers 元素则是包含一组 mapper 映射器(这些 mapper 的 XML 文件包含了 SQL 代码和映射定义信息) -->
<mappers>
<mapper resource="com/jjx/bean/EmpMapper.xml"/>
</mappers>
</configuration>
然后根据Mybatis-config.xml配置文件创建SqlSessionFactory,以及获取SqlSession,如下:public class TestDemo {
public static void main(String[] args) throws Exception {
// 获取mybatis的配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 根据配置文件创建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 获取SqlSession,与数据库连接
SqlSession session = sqlSessionFactory.openSession();
try {
Emp emp = (Emp) session.selectOne("com.jjx.bean.Emp.findById", 7369);
System.out.println("雇员编号:" + emp.getEmpno() + ", 雇员名称:" + emp.getEname()
+ ", 雇员工作:" + emp.getJob() + ", 奖金:" + emp.getComm());
} finally {
// 释放资源
session.close();
}
}
}
然后创建与数据库表对应的实体类,我用的是Oracle数据库中Scott用户中的表,实体就是简单java类,如下:
public class Emp implements Serializable {
private static final long serialVersionUID = 1L;
// 雇员编号
private Integer empno;
// 雇员名字
private String ename;
// 工种
private String job;
// 管理者编号
private Integer mgr;
// 入职日期
private Date hiredate;
// 基本工资
private BigDecimal sal;
// 奖金
private BigDecimal comm;
/**
* @return the empno
*/
public Integer getEmpno() {
return empno;
}
/**
* @param empno
* the empno to set
*/
public void setEmpno(Integer empno) {
this.empno = empno;
}
/**
* @return the ename
*/
public String getEname() {
return ename;
}
/**
* @param ename
* the ename to set
*/
public void setEname(String ename) {
this.ename = ename;
}
/**
* @return the job
*/
public String getJob() {
return job;
}
/**
* @param job
* the job to set
*/
public void setJob(String job) {
this.job = job;
}
/**
* @return the mgr
*/
public Integer getMgr() {
return mgr;
}
/**
* @param mgr
* the mgr to set
*/
public void setMgr(Integer mgr) {
this.mgr = mgr;
}
/**
* @return the hiredate
*/
public Date getHiredate() {
return hiredate;
}
/**
* @param hiredate
* the hiredate to set
*/
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
/**
* @return the sal
*/
public BigDecimal getSal() {
return sal;
}
/**
* @param sal
* the sal to set
*/
public void setSal(BigDecimal sal) {
this.sal = sal;
}
/**
* @return the comm
*/
public BigDecimal getComm() {
return comm;
}
/**
* @param comm
* the comm to set
*/
public void setComm(BigDecimal comm) {
this.comm = comm;
}
}
然后创建映射配置文件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="com.jjx.bean.Emp">
<select id="findById" resultType="com.jjx.bean.Emp" parameterType="Integer">
select * from emp where empno = #{empno}
</select>
</mapper>
EmpMapper.xml中的mapper标签的namespace指向的是我上面的实体类名称, <select></select>标签的id属性是该SQL语句的唯一标识,后面会用到;resultType是返回类型,这里就是放回的是实体类类型;parameterType指的是传入参数类型;内面的SQL中#{empno}就是我们传入的参数。
注意:这个EmpMapper.xml文件要在mybatis-config.xml中的mappers标签中配置了才可以用
下面在看看如何操作数据库的,代码如下
// 获取mybatis的配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 根据配置文件创建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 获取SqlSession,与数据库连接
SqlSession session = sqlSessionFactory.openSession();
try {
Emp emp = (Emp) session.selectOne("com.jjx.bean.Emp.findById", 7369);
System.out.println("雇员编号:" + emp.getEmpno() + ", 雇员名称:" + emp.getEname()
+ ", 雇员工作:" + emp.getJob() + ", 奖金:" + emp.getComm());
} finally {
// 释放资源
session.close();
}
代码"com.jjx.bean.Emp.findById"中部分com.jjx.bean.Emp对应的是EmpMapper.xml中的namespace,findById对应的就是<select>标签中的id。
session对象就会去调用EmpMapper.xml中的SQL语句放回一个Emp实体对象,这样就获取到了数据中的数据了。
session对象就会去调用EmpMapper.xml中的SQL语句放回一个Emp实体对象,这样就获取到了数据中的数据了。
这里只是很简单获取到数据库中的数据,mybatis获取数据库中的数据方法有三种,这只是其中一种,后面再会讲到其它的方法。