关于mybatis踩过的坑

1.sql文件在多表时要使用别名.字段接收属性值,不然会出现ambigous错误
2.resultmap定义了你的查询结果按什么形式封装,一般Type都是对象,如果字段是多表查询结果,比如User下有个List,那么看情况使用association和collection标签去定义接收,以上没有指定接收的字段结果会被丢弃,返回结果中会赋值为null。或者不使用这种方式,而是把别的表中需要查的实体类属性加入当前类,如User下需要Order的oderTag属性,就User{String orderId;String orderTag},但需要注意应当与外表的oderTag数据类型保持一致,不然会有很大的麻烦,因为业务层要做很多转数据类型的操作。然后sql查询时取别名o.order_tag as order_tag,在resultMap 中指定property=“orderTag” colum=“order_tag”,就可以完成映射了。但需要注意的是,建表时不能这样任意添加字段,应当遵守多表间的对应关系创建字段。
只有在结果封装时可以这么干,这是为了业务上处理的方便。
3.当查询的sql结果集我们只需要部分字段封装数据,其他的我们希望返回null就可以自定义一个resultmap,Type还用实体类返回给前端该对象,不过就算sql查询结果都有,但不指定就不封装,最终还是null。
4.建表时主外键,实体类属性要保持数据类型一致。一般根据关联关系,在各自的类和表加入主外键字段:一对一,两张表互相添加主外键,实体类也是一样;一对多,在多的一方表添加,实体类多的一方添加id,一的一方添加List ids;多对多,各自的表不添加主外键,在中间表添加关联关系,实体类互相添加List ids
5.必要条件放在where可选条件标签后,然后and delete_flag='0’即可。
6.在设置进行多条件查询、插入、更新时可以多设置几个没关系,因为前台只会使用到部分,但如果前台上传字段超过你设置的<if>后台字段接收数量会出现字段无法接收的错误
7.前台数据传输如果post传输json数据,可以使用(@RequestBody String s )接收过来然后用json转换工具转,要么使用@(@RequestBody Map map )去接收然后自己手动封装,要么使用实体类@RequestBody T obj ),前两种通用,推介使用String 或对象接收,Map还要手动转极其麻烦,前者一个是fastjson转换工具转和springmvc框架转,很方便且不易出错
8.有时候从数据库得到的结果集需要处理结果集数据,比如某个字段为1,我们结果集显示成功,0表示失败,那么实际上我们可以在业务层处理结果集或者直接在mysql使用mysql的一些函数对结果集进行处理后返回,两种方案都可以,推介使用mysql函数,因为比较方便提高代码简洁程度,但如果数据库访问压力过大服务器性能优越也可以放在业务层处理结果集数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值