自定义的SQL生成器

自定义的SQL生成器

  前言:最近学了一些Mybatis与Spring的源码,突然间特别想写一个自己的框架,于是就想到了写一个对象转换成SQL的demo,写完之后感觉不太过瘾,从新整理了一番,又模仿spring的思想,在生成sql的时候,用户可以插手spring的生成,感觉有点那个意思了。那么大家来一起看看把,文章的最后附上get的地址

1 ) 效果展示

在这里插入图片描述

  • @birdTable(“user1”) 注解中对应的数据库的表名
  • @birdField(“username1”) 注解中对应的是表中的字段

在这里插入图片描述  如图所示,只需要简单的传入就可以生成查询的sql,同理增删改也是可以的这里就不演示了,那么本项目就仅此而已了么?当让不是,接下来我就一起来了解一下,还有什么其他的功能

2 )表名与字段名的生成策略

  这个是什么意思呢,在上面的例子中,我们发现是使用了两个注解来确定映射关系的,那么如果我们没有加注解的化,会出现什么效果呢?一起来看一下
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200717223744907.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0

在这里插入图片描述
生成策略,那么这个是巧合么?当然不是,当用户没有添加注解的时候,我们的项目就需要执行生成策略,默认的也是一种生成策略在源码中在这里插入图片描述
那么如果你不满足这个生成策略,或者你不想通过加注解的方式,那么你可以自己继承该类的接口,自己写一个类,然后添加到项目中,接下来,我来演示一下

2 )自定义策略

(为了突出这是一个工具,接下来我在eclipse中导入我自己jar包)
  我们定义一个类luoNameStrategy继承接口NameStrategyPrioritySort,NameStrategy的作用是写生成表名的逻辑代码,PrioritySort则是设置优先级,因为系统默认的生成策略,优先级为5,所以你想要自己的好使,就需要将优先级设置大于5,在我这个演示中,我在生成策略后面加上123意思一下就可以了,看代码![在这里插入图片描述](https://img-blog.csdnimg.cn/20200717225210922.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2E3MzYyMjUzNDg=,size_16,color_FFFFFF,t_70

注意注意,接下来开始使用了(有很多种方式将你自己定义的对象注入到项目当种,我这里演示两种)
在这里插入图片描述

在这里插入图片描述

还有很多的构造方法,我就不一一演示了,看一下运行结果
在这里插入图片描述
后面加上了123,所以我们自定义的策略成功启动了,那么如果我们将优先级将为4呢试一下
在这里插入图片描述
在这里插入图片描述
很明显,启动的还是系统默认的策略,字段也是一样需要继承FieldStrategy接口,优先级同理,这里就不作重复演示了。

2 )系统处理器

  在本项目中有一个处理器的概念,就是我们在生成sql语句前后希望干点事情,所以处理器分为前置处理器与后置处理器,项目中有默认的处理器。一起来看一下,当前是没有使用处理器的状态
在这里插入图片描述
在这里插入图片描述
那我们现在开启一个后置处理器,这个处理器的作用是在sql的结尾加上
在这里插入图片描述
在这里插入图片描述
实际上这里面注入了一个后置处理器,还有一个系统的后置处理器,但是需要手动注入,默认是将sql美化,如果想将sql化为一行的化,需要开启一个后置处理器,
在这里插入图片描述
在这里插入图片描述
这里面我们就能看到效果了。

3 )自定义处理器

  现在你感觉到处理器的强大了把,当然我们可以自定义处理器,接下来我们就定义一个前置处理器和一个后置处理器,来感受一下把,
在这里插入图片描述
在这里插入图片描述

下面开始注入‘
在这里插入图片描述
emmmm,好像有点bug,瑕不掩瑜,瑕不掩瑜哈,我回头再稍加修改,那都不重要了,在下面有项目地址,有需要的可以自行修改一下

3 )总结

这个小项目功能相对挺全面的,而且很有趣,可以体会到开发框架的快感,虽然简单把,也需要费一段时间,主要就是通过注解 + 反射实现的,还实现了自定义组件,如果有看不懂实现的,或者想了解实现的,可以看源码,或者在评论区留言,如果有需要,我再将一个设计的思路。
地址:https://gitee.com/luoxiangze/bluebird.git

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatisplus 自定义sql 使用条件构造器可以在自定义 SQL 语句中使用 Mybatisplus 的条件构造器,方便快捷地构造查询条件。 使用步骤: 1. 在 Mapper 接口中定义自定义 SQL 语句的方法,方法返回值为 List 或者其他需要返回的结果类型。 2. 在自定义 SQL 语句中使用 ${} 占位符来引用条件构造器生成SQL 片段。 3. 在方法参数中使用 @Param 注解来指定条件构造器生成SQL 片段的参数名称和类型,同时在自定义 SQL 语句中使用 #{参数名} 占位符来引用参数。 4. 在方法中使用 QueryWrapper 类来构造查询条件,然后将 QueryWrapper 对象作为参数传递给自定义 SQL 语句方法即可。 示例代码如下: ``` @Mapper public interface UserMapper extends BaseMapper<User> { @Select("SELECT * FROM user ${ew.customSqlSegment}") List<User> selectByCustomSql(@Param(Constants.WRAPPER) QueryWrapper<User> wrapper); } ``` 其中,${ew.customSqlSegment} 是 Mybatisplus 条件构造器生成SQL 片段,@Param(Constants.WRAPPER) 指定了 wrapper 参数的名称和类型。 调用示例: ``` QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.eq("age", 18).like("name", "张"); List<User> userList = userMapper.selectByCustomSql(wrapper); ``` 以上代码中,使用 QueryWrapper 构造了查询条件,然后将 QueryWrapper 对象作为参数传递给 selectByCustomSql 方法,该方法会根据传入的 QueryWrapper 对象生成自定义 SQL 语句,并返回符合条件的用户列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值