MyBatis 的CRUD 功能代码演示

本文通过具体示例展示了如何使用 MyBatis 框架实现基本的 CRUD (创建、读取、更新、删除) 操作。包括配置文件设置、Mapper 文件定义 SQL 语句、Java 接口声明操作方法等内容。

MyBatis 的CRUD 功能代码演示


SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE configuration  
 PUBLIC "-//ibatis.apache.org//DTD 
 Config 3.0//EN"            
 "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<!-- SqlMapConfig MyBatis 的主配置文件 -->
<configuration>
	<environments default="environment">
		<environment id="environment">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" 
					value="oracle.jdbc.OracleDriver" />
				<property name="url"
					value="jdbc:oracle:thin:@192.168.201.216:1521:orcl"/>
				<property name="username" value="tom" />
				<property name="password" value="open123" />
			</dataSource>
		</environment>
	</environments>
	<!-- mappers 指向子 Sql 映射关系配置文件 -->
	<mappers>
		<!-- 有多个子配置文件!  
		每个表对应一个子Mapper.xml文件
		每个Mapper.xml文件用于登记SQL语句-->
		<mapper resource="DeptMapper.xml" />
		<!-- 
		<mapper resource="CostMapper.xml" />
		-->
	</mappers>
</configuration> 

DeptMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"      
 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<!-- DeptMapper.xml  -->
<mapper 
  namespace="cn.tedu.mapper.DeptMapper">
 	<select id="findAll" 
		resultType="cn.tedu.entity.Dept">
	  select deptNo, dname, loc from Dept
	</select>
	
	<insert id="addDept"
		parameterType="cn.tedu.entity.Dept">
		insert into dept (deptNo, dname, loc) 
		values(#{deptNo},#{dname},#{loc})
	</insert>
	
	<delete id="deleteDept" 
		parameterType="cn.tedu.entity.Dept">
		delete from dept where deptNo=#{deptNo}
	</delete>	
	<select id="findDeptById"
		resultType="cn.tedu.entity.Dept"
		parameterType="java.lang.Integer">
		select deptNo, dname, loc 
		from dept where deptNo=#{deptNo}
	</select>
	<update id="updateDept"
		parameterType="cn.tedu.entity.Dept">
		update dept 
		set dname=#{dname}, loc=#{loc}
		where deptNo=#{deptNo}
	</update>
	
	<select id="findDeptAll"
		resultType="java.util.Map">
		select dname as "dname", 
		loc as "loc" from dept
	</select>
</mapper>

DeptMapper.java

package cn.tedu.mapper;

import java.util.List;
import java.util.Map;

import cn.tedu.entity.Dept;


public interface DeptMapper {
	List<Dept> findAll();
	void addDept(Dept dept);
	void deleteDept(Dept dept);
	Dept findDeptById(Integer deptNo);
	void updateDept(Dept dept);
	List<Map<String, Object>> findDeptAll();
}

Dept.java

package cn.tedu.entity;

import java.io.Serializable;
/**
 * Java Bean
 *  1 有包
 *  2 序列接口
 *  3 Bean属性访问方法(get set)
 *  4 无参数构造器
 */
public class Dept implements Serializable {
	private int deptNo;
	private String dname;
	private String loc;
	
	public Dept() {
	}

	public Dept(int deptNo, String dname, String loc) {
		super();
		this.deptNo = deptNo;
		this.dname = dname;
		this.loc = loc;
	}

	public int getDeptNo() {
		return deptNo;
	}

	public void setDeptNo(int deptNo) {
		this.deptNo = deptNo;
	}

	public String getDname() {
		return dname;
	}

	public void setDname(String dname) {
		this.dname = dname;
	}

	public String getLoc() {
		return loc;
	}

	public void setLoc(String loc) {
		this.loc = loc;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + deptNo;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Dept other = (Dept) obj;
		if (deptNo != other.deptNo)
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "Dept [deptNo=" + deptNo + ", dname=" + dname + ", loc=" + loc
				+ "]";
	}
	
}

TestCase.java

package cn.tedu.test;

import java.io.Reader;
import java.util.List;
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;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.tedu.DemoBean;
import cn.tedu.entity.Dept;
import cn.tedu.mapper.DeptMapper;

public class TestCase {
	//@Test
	public void testFindAll()
		throws Exception{
		
		//利用MyBatis API 作为工厂创建mapper
		Reader in = Resources
			.getResourceAsReader(
				"SqlMapConfig.xml");
		SqlSessionFactoryBuilder builder=
			new SqlSessionFactoryBuilder();
		SqlSessionFactory factory=
			builder.build(in);
		SqlSession session = 
			factory.openSession();
		DeptMapper mapper = session
			.getMapper(DeptMapper.class);
		
		List<Dept> list=mapper.findAll();
		for(Dept d: list){
			System.out.println(d);
		}
		
		session.close();
	}
	
	//@Test
	public void testAddDept()
		throws Exception{
		
		//利用MyBatis API 作为工厂创建mapper
		Reader in = Resources
			.getResourceAsReader(
				"SqlMapConfig.xml");
		SqlSessionFactoryBuilder builder=
			new SqlSessionFactoryBuilder();
		SqlSessionFactory factory=
			builder.build(in);
		SqlSession session = 
			factory.openSession();
		DeptMapper mapper = session
			.getMapper(DeptMapper.class);
		
		Dept dept = new Dept(300, "IOS", "潘家园");
		
		mapper.addDept(dept);
		session.commit();
		session.close();
	}
	
	public SqlSession getSession() throws Exception {
		Reader in = Resources.getResourceAsReader("SqlMapConfig.xml");
		SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
		SqlSessionFactory factory = builder.build(in);
		SqlSession session = factory.openSession();
		return session;
	}
	
	//@Test
	public void testDeleteDept() 
		throws Exception{
		SqlSession session = getSession();
		DeptMapper mapper = session
			.getMapper(DeptMapper.class);
		//从数据库中找到一个部门
		Dept dept = mapper.findDeptById(100);
		//将找到的部门删除
		mapper.deleteDept(dept);
		session.commit();
		session.close();
	}
	
	//@Test
	public void testUpdateDept()
		throws Exception {
		SqlSession session = getSession();
		DeptMapper mapper = session
			.getMapper(DeptMapper.class);
		Dept d = mapper.findDeptById(200);
		d.setDname("Web 前端");
		d.setLoc("万寿路");
		mapper.updateDept(d);
		session.commit();
		session.close();
	}
	
	//@Test
	public void testFindDeptAll()
		throws Exception {
		SqlSession session = getSession();
		DeptMapper mapper = session
			.getMapper(DeptMapper.class);
		List<Map<String, Object>> list=
			mapper.findDeptAll();
		for(Map<String, Object> row:list){
			System.out.println(row);
		}
		session.close();
	}

//	/@Test
	public void testSqlSession()
		throws Exception {
		SqlSession session = getSession();
		//直接执行SQL语句,参数是SQL的ID属性
		//这里的SQL是指在Mapper文件中定义的SQL
		List<Map<String, Object>> list=
		  session.selectList("findDeptAll");
		for (Map<String, Object> row : list) {
			System.out.println(row); 
		}
		session.close();
	}
	
	public ApplicationContext getCtx(){
		String cfg="spring-mvc.xml";
		ApplicationContext ctx = 
			new ClassPathXmlApplicationContext(cfg);
		return ctx;
	}
	//@Test
	public void testMapperBean(){
		DeptMapper mapper = getCtx()
			.getBean("deptMapper", 
			DeptMapper.class);
		List<Dept> list = mapper.findAll();
		for (Dept dept : list) {
			System.out.println(dept); 
		}
	}
	
	@Test
	public void testDemoBean(){
		DemoBean bean = getCtx()
			.getBean(DemoBean.class);
		bean.demo();
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值