我们学习一样新东西时,要首先去官网,看官方文档,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获取数据库中的数据方法有三种,这只是其中一种,后面再会讲到其它的方法。