DAO中代码
package cn.alexander.dao; import cn.alexander.entity.Dept; import java.util.List; import java.util.Map; public interface IDeptDAO { /** * 查询所有的部门 */ public List<Dept> findAll(); /** *添加部门 */ public void addDept(Dept dept); /** *添加部门,并获得添加后的主键 * @param dept */ public void addDeptCachedId(Dept dept); /** *删除部门 * @param */ public void delete(Integer deptno); /** * 修改部门信息 */ public void updateDept(Dept dept); /** *查询所有返回map集合 * @param */ Map<String,Object> selectAllByMap(); /** *模糊查询 * @param */ List<Dept> selectByName(String name); }
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"> <!--映射文件的根节点 namespace --> <mapper namespace="cn.alexander.dao.IDeptDAO"> <!-- 查询所有操作--> <select id="findAll" resultType="Dept"> select * from dept </select> <!-- 添加 操作--> <insert id="addDept" parameterType="cn.alexander.entity.Dept"> INSERT INTO dept(deptname) values(#{deptname}) </insert> <!-- 添加操作,并且获得添加后的主键值--> <insert id="addDeptCachedId" parameterType="cn.alexander.entity.Dept"> INSERT INTO dept(deptname) values(#{deptname}) <selectKey resultType="int" keyProperty="deptno" order="AFTER"> select @@identity </selectKey> </insert> <!-- 删除操作--> <delete id="delete" > <!--#{sa} sa仅仅就是一个占位符 写成什么都是可以的 --> DELETE from dept where deptno= #{sa} </delete> <!-- 修改操作,传递一个dept对象--> <update id="updateDept" parameterType="Dept"> update dept set deptname=#{deptname} where deptno=#{deptno} </update> <!-- 查询所有dept 返回值是map 如果我们写的是resultType="map",那么mybatis在底层会把我们的每个字段当成key,字段对象的值是value,这样不可行。我们是想把某一个字段当成key,整行数据当做value,这时候就需要把resultType换成resultMap--> <select id="selectAllByMap" resultMap="deptMap"> select deptno,deptname from dept </select> <resultMap id="deptMap" type="Dept"> <id property="deptno" column="deptno"/> <result property="deptname" column="deptname"/> </resultMap> <!-- 模糊查询 --> <select id="selectByName" resultType="Dept"> /*select deptno,deptname from dept where deptname like concat('%',#{deptname},'%')*/ select deptno,deptname from dept where deptname like '%' #{deptname} '%' /* select deptno,deptname from dept where deptname like '%' ${deptname} '%'*/ </select> </mapper>
Test类
package cn.alexander.test; import cn.alexander.dao.IDeptDAO; import cn.alexander.entity.Dept; import cn.alexander.util.SessionFactoryUtil; import org.apache.ibatis.session.SqlSession; import org.apache.log4j.Logger; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.List; import java.util.Map; public class Test20170923 { Logger logger = Logger.getLogger(Test20170923.class); IDeptDAO iDeptDAO = null; SqlSession session = null; @Before public void before(){ session = SessionFactoryUtil.getSession(); iDeptDAO = session.getMapper(IDeptDAO.class); } @Test /** * 查询所有 */ public void findAll(){ List<Dept> depts = iDeptDAO.findAll(); logger.debug(depts); } @Test /** * 添加操作 */ public void addDept(){ Dept dept = new Dept("行政部"); iDeptDAO.addDept(dept); session.commit(); } @Test /** * 添加操作后多得新加内容的主键 */ public void addDeptCachedId(){ Dept dept = new Dept("行政部"); System.out.println("方法之前的dept:"+dept); iDeptDAO.addDeptCachedId(dept); session.commit(); System.out.println("方法之后的dept:"+dept); } @Test /** * 删除操作 */ public void delete(){ iDeptDAO.delete(5); } @Test /** * 修改操作 */ public void updateDept(){ Dept dept = new Dept(3,"总工办"); iDeptDAO.updateDept(dept); session.commit(); } @Test /** * 查询得到map集合 */ public void selectDeptByMap(){ Map<String, Object> stringObjectMap = iDeptDAO.selectAllByMap(); logger.debug(stringObjectMap); } @Test /** * 模糊查询 */ public void selectByName(){ List<Dept> depts = iDeptDAO.selectByName("合"); logger.debug(depts); } @After public void after(){ if(session!=null){ session.close(); } } }