mybatis入门基础

目录

写mybatis时,总会有很多的 可以总结的经验

传入HashMap

HashMap<String ,Object>  map=new ..
map.put("id",3);
map.put("lower_name","我");
map.put("deptName","你");
// 中
<select id="getList"  parameterType="java.util.HashMap"  resultType="com.vo.TmpAticVo"  >
    select 
      a.temp_match_id as tempMatchId,
      a.user_id as userId // 直接将 userId 转化成了 Vo中 属性值
      from User a  
      where a.id=#{id}
 <if test="lower_name != null and lower_name != ''">
 and  a.lower_name  like '%${lower_name}%'
  </if> 
   <if test="deptName != null and deptName != '' " >  and   b.dept_name like  '%'||#{deptName}||'%'
    </if>

如图在 id=#{id}时, java会主动 将 传入的 Object 中 传入的 3 默认成了 int 或者 bigint,但是 如果 此时 数据库中 的 id 不是一个 int,那么 就会 出现 报错,所以 采用 HashMap

传入的是HashMap

传入的Map

遇到

Map map=new  
map.put("id",12)

因为 没有指定类型, 可能会出现
bigint=String 的情况,这样传入肯定报错,
不指定类型,mybatis 会默认当 String处理,从而报错

遇到批量插入

List<TblBonusPoolInfo> df=new ArrayList<>();
        TblBonusPoolInfo model=new TblBonusPoolInfo();
        model.setBonusPoolName("nimei3");
        TblBonusPoolInfo model2=new TblBonusPoolInfo();
        model2.setBonusPoolName("nimei2");
        df.add(model);
        df.add(model2);
        int i=mapper.insertBatch(df);

传入的 是一个list
在pgsql中,需要指定 自增长的 sequece

  <insert id="insertBatch" parameterType="java.util.List">
    <selectKey resultType="java.lang.Long" keyProperty="bonusId" order="AFTER" >
      SELECT currval('id_seqs')
    </selectKey>
    INSERT INTO tbl_bonus_pool_info( bonus_pool_name) VALUES
    <foreach collection="list" item="u" separator=",">
      (#{u.bonusPoolName})
    </foreach>
  </insert>

传入一个List

 List list= new ArrayList();
         list.add(1); list.add(11);
         list.add(18); list.add(12); 
        Map na=new HashMap();
        na.put("list",list);
        na.put("period",11);
        List<TblBonusPoolInfo> df=mapper.getByTest(na); 

传入和传出都是 map

而且你可以 随便写sql ,不考虑 转义

 <select id="getList"
        parameterType="java.util.HashMap"
          resultType="java.util.HashMap">
  <![CDATA[     SELECT
        a.bonus_id bonusId,
        a.bonus_pool_name   bonusPoolName 
    from
            tbl_bonus_pool_info a   ]]>
   </select >

自定义 复用语句

  <select id="getSupervisorAllEmp" parameterType="java.lang.String"
            resultType="com.baozun.vo.TreeVo" >
        SELECT  * from  (
        select a.id,a.pid as pId,
        concat_ws('_',a.name,a.status) as name,
        a.click,a.level,a.title ,a.rownums
        from   (   <include refid="supervisorList" />  )  a
        ) a
    </select>

include的具体 语句如下

   <sql id="supervisorList">
         select a.emp_code as id,
        a.emp_first_dept_code as pid,
        concat_ws('_',a.emp_code,a.emp_name)  as name ,
        (case when   a.status ='1'
        then '在职'
        else '离职'
        end )as status  ,
        'emp' as title, 
        (row_number() OVER (ORDER BY a.emp_first_dept_code)+ 30000) as rownums
        from  tbl_emp_basic_info a
         limit 1 )
    </sql>

猜你喜欢

转载自blog.csdn.net/sinat_27639721/article/details/79021728