myBatis 基本环境搭配

本文通过具体示例介绍如何使用 MyBatis 实现增删改查(CRUD)操作,包括配置文件设置、实体类定义、接口声明及映射文件编写。

1.加入所需jar

class12.jar

mybatis-3.2.2.jar

2.本例用到Oracle下的Scott用户下的Emp表

3.创建Emp实体类

package com.nantian.domain;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.text.SimpleAttributeSet;

public class Emp {
	private Integer empNo;
	private String ename;
	private String job;
	private Integer mgr;
	private String hireDate;
	private Double sal;
	private Double comm;
	private Integer deptNo;
	
	public Emp() {
		super();
		// TODO Auto-generated constructor stub 一定要加上此构造方法,否则会报错!
	}
	
	public Emp(Integer empNo, String ename, String job, Integer mgr,
			String hireDate, Double sal, Double comm, Integer deptNo) {
		super();
		this.empNo = empNo;
		this.ename = ename;
		this.job = job;
		this.mgr = mgr;
		this.hireDate = hireDate;
		this.sal = sal;
		this.comm = comm;
		this.deptNo = deptNo;
	}

	public Integer getEmpNo() {
		return empNo;
	}
	public void setEmpNo(Integer empNo) {
		this.empNo = empNo;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public Integer getMgr() {
		return mgr;
	}
	public void setMgr(Integer mgr) {
		this.mgr = mgr;
	}
	public String getHireDate() {
		
		return hireDate;
	}
	public void setHireDate(String hireDate) {
		this.hireDate = hireDate;
	}
	public Double getSal() {
		return sal;
	}
	public void setSal(Double sal) {
		this.sal = sal;
	}
	public Double getComm() {
		return comm;
	}
	public void setComm(Double comm) {
		this.comm = comm;
	}
	public Integer getDeptNo() {
		return deptNo;
	}
	public void setDeptNo(Integer deptNo) {
		this.deptNo = deptNo;
	}
	public String toString() {
		return "Emp [comm=" + comm + ", deptNo=" + deptNo + ", empNo=" + empNo
				+ ", ename=" + ename + ", hireDate=" + hireDate + ", job="
				+ job + ", mgr=" + mgr + ", sal=" + sal + "]";
	}
	

}
4. 创建EmpMapper.java接口

package com.nantian.dao;

import java.util.Map;

import com.nantian.domain.Emp;

public interface EmpMapper {
	public Emp findById(Integer id);
	public boolean updateEmp(Map map);
}
5.建立相应的映射文件EmpMapper.xml

<?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"
>
<!--这块等于dao接口的实现  namespace必须和接口的类路径一样-->  
<mapper namespace="com.nantian.dao.EmpMapper">
 <resultMap id="Emp" type="com.nantian.domain.Emp" />
 <!-- findById必须和接口中的方法名一样  返回一个Emp 
  就是刚才的别名  如果不弄别名要连类路径一起写 麻烦-->  
<select id="findById" parameterType="HashMap" resultMap="Emp">
select * from emp where empNo=#{empNo}
</select>
<update id="updateEmp" parameterType="HashMap">
update temp set ENAME=#{ename} where EMPNO=#{empno}
</update>

</mapper>


6. 建立configuration.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>
	<typeAliases>
	 <!--给实体类起一个别名 Emp -->  
		<typeAlias type="com.nantian.domain.Emp" alias="Emp" />
	</typeAliases>

	<environments default="development">
		<environment id="development">
		<!--数据源配置 -->  
			<transactionManager type="jdbc" />
			<dataSource type="POOLED">
				<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
				<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
				<property name="username" value="scott" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
	<!--EmpMapper.xml装载进来  同等于把“dao”的实现装载进来 -->  
	<mapper resource="com/nantian/dao/EmpMapper.xml"/>
	
	</mappers>
</configuration>

7.测试

package com.nantian.dao;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class test {
	/** 
     * 获得MyBatis SqlSessionFactory   
     * SqlSessionFactory负责创建SqlSession,一旦创建成功,就可以用SqlSession实例来执行映射语句,commit,rollback,close等方法。 
     * @return 
     */  
	private static SqlSessionFactory getSessionFactory(){
		SqlSessionFactory sessionFactory = null;
		String resource = "configuration.xml";
		try {
			sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return sessionFactory;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SqlSession sqlSession = getSessionFactory().openSession();
		EmpMapper empMapper = (EmpMapper) sqlSession.getMapper(EmpMapper.class);
		//Emp emp = empMapper.findById(new Integer(7369));
		
		//System.out.println(emp.getHireDate());
		Map map = new HashMap();
		map.put("ename", "wjn");
		map.put("empno", new Integer(7369));
		if(empMapper.updateEmp(map)){
			System.out.println("succ");
		}
		sqlSession.commit();

	}

}

8.总结

    myBatis接口中的方法名字和EmpMapper.xml中对应的id应该一致,且接口无需实现,直接调用接口即可现实CRUD操作!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值