背景
什么是框架?
半成品
软件,快速帮助开发者构建程序- 框架提供的往往是固定的、已知的、不变的,这些
代码往往可重用
- 针对自己的业务,
变化的、未知的部分由使用者自己完成
将未知交给子类(单例模式)
将未知交给用户(JDBCTemplate)
原始链接数据库的方法
- 变化的一般是
链接参数
、sql
语句之类- 链接的
大部分操作都是不变的
JDBCTemplate 又是如何去做的呢
链接的操作交给template
- 变化的
sql作为参数
传递进来
延迟拼接(MybatisPlus)
- mybatisplus提供了一个in函数,用于拼接in
- 但是如果传入的数据是空的话,sql语句就会报错
- 解决方案:使用
延迟拼接
,只有在数组不为空的时候,才会进行拼接
研究一下in的源码
使用maydo方法,有两个参数
- boolean类型的condition,用于判断是否执行
- 函数对象,具体做什么
maydo的方法体
- 非常常规的if判断,如果满足条件,完成拼接
偏门使用
- 方法引用和lambda表达式是可以相互转换的,但是我们这么做了之后,就会发现会报错
- 原因:这里的Student::getName
这个方法返回的是name这个列名,而不是列对应的值
如何实现的呢?
- 具体实现方法是
writeReplace
方法,但是使用方法之前
需要先获取一些参数