使用mybatis的一些总结

本文总结了使用mybatis的实践经验,包括动态sql的便利性、多表连接、增删改查接口的定义、特殊字符处理、datetime字段筛选、多表连接问题及解决方案、内连接与外连接的运用,以及复杂sql的编写技巧。重点介绍了动态条件判断、ifnull函数的使用、自定义字段逻辑判断等,旨在帮助开发者更好地理解和应用mybatis。
摘要由CSDN通过智能技术生成

前言

这段时间项目中需要写一些api,我负责其中的几个,也是第一次真正意义上的使用mybatis,所以我认为有必要作一个总结来反映我学习的成果。


首先我们应该都知道,mybatis的sql语句要么是写在xml文件中,要么直接使用@select注解在mapper类中写。但我个人偏向于写在xml文件中,因为有时候sql语句比较长、比较复杂,直接用注解的话可能一眼看过去并不知道是实现了什么功能,相反xml文件中使用特有的标签能帮助我们理解语句完成的功能。

1. 动态sql
mybatis写动态sql真的非常非常方便简洁了,好用到想为它疯狂打call!!!
例如有三个可选的条件,那么sql语句可以这么写:

SELECT
    A.authorName,A.country,B.bookName
    FROM author AS A
    LEFT OUTER JOIN book AS B ON (A.author_id = B.author_id AND A.book_id = B.book_id)
    <where>
      <if test="authorName!=null"></if>
      A.author_name = #{authorName}
      <if test="bookName!=null">
        AND B.bookName = #{bookName}
      </if>
      <if test="publicTime!=null">
        AND B.public_time = #{publicTime}
      </if>
    </where>
    GROUP BY A.authorName

在这个例子中,需要使用到几个知识点:
a.表与表的连接
b.动态条件判断语句的使用
c.<if>元素中,如果包括变量,不需要写成#{varName}的形式,而是直接写它的变量名就可以了。(我就是在这个地方吃了亏的,调试很久才发现,希望看到的读者不要踩这个雷。)

2. 多张表连接的写法

SELECT A.id,A.app_id,A.app_name,B.menu ,C.author_name
  FROM user_collection_app AS A
  LEFT OUTER JOIN app AS B ON A.app_id = B.app_id
  LEFT OUTER JOIN auth_user AS C ON B.author_id = C.author_id
  WHERE A.user_id = #{userId} GROUP BY A.app_id

3. 可以定义一个公共的接口实现基本的增删改查
如果经常需要使用基本的增删改查方法,为了减少每次书写语句的工作量,可以定义一个通用接口,让其他的接口去继承它,那么每次要使用的时候,就能直接去调用了,这可以节约不少时间跟精力。
例如:

public interface MyService<T> {
    void save(T model);//持久化
    void save(List<T
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值