mybatis除了支持dao接口代理的开发方式外,还支持传统的写dao接口、dao实现的方式进行dao开发。
5.2.1 dao接口
package com.dfbz.dao;
import com.dfbz.entity.Emp;
import java.util.List;
public interface EmpDao {
// 统计总记录数
Long count();
// 查询全部
List<Emp> findAll();
// 模糊查询
List<Emp> findByName(String name);
// 新增用户
void save(Emp emp);
// 修改用户
void update(Emp emp);
// 删除用户
void delete(Integer id);
// 主键查询
Emp findById(Integer id);
}
5.2.2 接口映射
<?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">
<!--namespace 名称空间,指定对哪个接口进行映射-->
<mapper namespace="com.dfbz.dao.EmpDao">
<!--查询统计-->
<select id="count" resultType="long">
select count(1) from emp
</select>
<!--查询全部-->
<select id="findAll" resultType="emp">
select * from emp
</select>
<!--模糊查询-->
<select id="findByName" parameterType="string" resultType="emp">
select * from emp where name like #{name}
</select>
<!--新增用户-->
<insert id="save" parameterType="emp">
<selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID();
</selectKey>
insert into emp VALUES (null,#{name},#{age},#{salary},#{addr})
</insert>
<!--修改用户-->
<update id="update" parameterType="emp">
update emp set name=#{name},age=#{age},salary=#{salary},
addr=#{addr} where id=#{id}
</update>
<!--删除用户-->
<delete id="delete" parameterType="int">
delete from emp where id=#{id}
</delete>
<!--主键查询-->
<select id="findById" parameterType="int" resultType="emp">
select * from emp where id=#{id}
</select>
</mapper>
5.2.3 测试类
package com.dfbz.test;
import com.dfbz.dao.EmpDao;
import com.dfbz.entity.Emp;
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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class Demo01 {
InputStream is;
//获取工厂构造器对象
SqlSessionFactoryBuilder builder;
//获取session工厂
SqlSessionFactory factory ;
//获取session会话对象,与数据交互会话
SqlSession session;
EmpDao empDao;
@Before
public void before() throws Exception{
//获取主配置文件流
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
builder = new SqlSessionFactoryBuilder();
factory = builder.build(is);
session = factory.openSession(true);
empDao = session.getMapper(EmpDao.class);
}
@After
public void after() throws IOException { // 关闭session
session.close();
}
@Test
public void test1() {
Long count = session.selectOne("com.dfbz.dao.EmpDao.count");
System.out.println(count);
}
@Test
public void test2() {
List<Emp> userList= session.selectList("com.dfbz.dao.EmpDao.findAll");
System.out.println(userList);
}
@Test
public void test3() {
List<Emp> empList = session.selectList("com.dfbz.dao.EmpDao.findByName","%小%");
System.out.println(empList);
}
@Test
public void test4() {
session.insert("com.dfbz.dao.EmpDao.save",new Emp(null,"小刚",26,"江西吉安",3000.0));
}
@Test
public void test5() {
session.update("com.dfbz.dao.EmpDao.update",new Emp(2,"李小四",21,"福建南平",8000.0));
}
@Test
public void test6() {
session.delete("com.dfbz.dao.EmpDao.delete",2);