Mybatis开发总结

有了Hibernate的开发基础,上手MyBatis是非常快的。但是在实际应用中,还是遇到了一些问题。总结一下,分享出来:

1、使用插件“mybatisGenerator”生成的辅助代码  Example做组合查询,非常方便,如下:

AfficheExample example = new AfficheExample();
Criteria cri = example.createCriteria().andNameEqualTo("ttt")
.andUserIdEqualTo("mm");
example.setOrderByClause("id asc");
afficheMapper.selectByExample(example);


2、直接写语句,做组合查询也非常方便:

SELECT * FROM hc_product
		<where>
			<if test="productname!=null">
				productName = '${productname}'
			</if>
			<if test="productid!=null">
				and p.productId = '${productid}'
			</if>
		</where>

这样就能完成多选择条件查询。


3、一般的查询,直接返回实体类型即可。对于关联查询,处理方式之一就是:自己构造一个ResultMap,如名为Map1,将自己所需要的字段字段放在Map1中做映射。然后将查询的结果设置为Map1.

在Map1中,我们可以多映射一些字段,为空的查询默认不映射。

而在dao层接口中,我们一般会设置改方法的返回类型为:List<Map<String,Object>>,每一个list里面,存放的诸多map键值对,就对应查询上来的一条记录;而map键值对里面就是对应的字段名:字段值;


4、Mybatis中mapper文件中的增删改方法,默认返回int类型。如果是增方法,则默认返回增加记录的条数,如果增加1条记录,则返回1,;如果增加100条记录,则返回100。改、删方法与增方法相同。


5、Mybatis中不兼容不同的">"或者"<"符号,我们可以将sql语句写在"<!CDATA[你的sql]>"中,也可以使用对应的符号代替:

&lt; 小于 <     

&gt; 大于 >

&amp;  和 &

&apos;   单引号 '

&quot;   双引号"

ps:写在 <!CDATA[你的sql]> 中的sql语句,mybatis不会对其中的内容再做智能解析。


6、注意Mybatis中ResultMap和ResultType不一样。


7、批量添加例子:

<insert id="batchInsertRepay" parameterType="java.util.List">  
		  <selectKey resultType="long" keyProperty="id" order="AFTER">  
	        	SELECT  LAST_INSERT_ID()  
	      </selectKey>                       
		    INSERT INTO hc_theory(id,Term,repayTime)  
		    VALUES   
	    <foreach collection="list"  item="theory"  index="index"  separator=",">  
	        (
		        #{theory.id},
		        #{theory.term},
		        #{theoryRepay.repaytime}
	        )  
	    </foreach>  
	</insert>


8、返回数量(Integer)的处理:

Mybatis映射中没有Java的基本类型int,返回Integer,有可能返回Null,所以要做如下处理:

public Integer selectStockNumByProductId(String productId){
		Integer i =stockMapper.selectStockNumByProductId(productId);
		
		return i==null?0:i;
	}


Mybatis的映射很好用。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值