Mybatis——增删改查(二)

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

 

posted @ 2017-09-24 00:13  AlexanderTheGreat  阅读(313)  评论(0编辑  收藏  举报