Mybatis学习笔记(一)

    我们学习一样新东西时,要首先去官网,看官方文档,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实体对象,这样就获取到了数据中的数据了。

        这里只是很简单获取到数据库中的数据,mybatis获取数据库中的数据方法有三种,这只是其中一种,后面再会讲到其它的方法。


猜你喜欢

转载自blog.csdn.net/xingkongdeasi/article/details/79784055