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();
}
}