前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis中的org.apache.ibatis.jdbc.SQL 的两种实例化方法

Mybatis中的org.apache.ibatis.jdbc.SQL 的两种实例化方法

作者头像
崔认知
发布2023-06-19 15:16:54
4230
发布2023-06-19 15:16:54
举报
文章被收录于专栏:nobodynobody

Mybatis中的org.apache.ibatis.jdbc.SQL 的两种实例化方法


1、匿名实现类+初始块

我们看一下示例:

代码语言:javascript
复制
package com.example.demo;

import org.apache.ibatis.jdbc.SQL;

/**
 * @author 认知科技技术团队
 * 微信公众号:认知科技技术团队
 */
public class SQLDemo {
    public static void main(String[] args) {
        String sql = new SQL() {
            {
                FROM("demo_table");
                SELECT("a");
                SELECT("b");
                WHERE(" id > 1");
                WHERE(" b > 2");
                ORDER_BY("id ");
                LIMIT(10);

            }
        }.toString();
        System.out.println(sql);

        sql = new SQL() {
            {
                FROM("demo_table");
                SELECT("a");
                SELECT("b");
                WHERE(" id > 1");
                WHERE(" b > 2");
                ORDER_BY("id ");
                LIMIT(10);

            }
        }.toString();
        System.out.println(sql);
    }
}

new SQL() {{}}是什么语法?

new SQL() {}其背后是生成了一个匿名类 {{}}中的 {}是java类中的初始化语法,前面加上static,即static {}就是静态初始化。

我们可以看一下编译后生成的字节码及反编译后的代码:

我们在线(https://www.javainuse.com/decomp)反编译下class文件:

new SQL() {{}}每次都会生成一个匿名类,实例化实例所使用的的class即为当前生成的匿名类。

注:反编译的有点小问题,不过我影响我们探讨其原理。

2、方法链(Method Chaining)

示例:

代码语言:javascript
复制
package com.example.demo;

import org.apache.ibatis.jdbc.SQL;

/**
 * @author 认知科技技术团队
 * 微信公众号:认知科技技术团队
 */
public class SQLDemo {
    public static void main(String[] args) {
        String sql = new SQL()
                .FROM("demo_table")
                .SELECT("a")
                .SELECT("b")
                .WHERE(" id > 1")
                .WHERE(" b > 2")
                .ORDER_BY("id ")
                .LIMIT(10).toString();
        System.out.println(sql);

        sql = new SQL()
                .FROM("demo_table")
                .SELECT("a")
                .SELECT("b")
                .WHERE(" id > 1")
                .WHERE(" b > 2")
                .ORDER_BY("id ")
                .LIMIT(10)
                .toString();
        System.out.println(sql);
    }
}

类似Builder模式中的方法链。

SQL类中与sql有关配置的方法都返回了自身,以达到Method Chaining的效果。

代码语言:javascript
复制
public SQL getSelf() {
    return this;
  }

小结


本文介绍了org.apache.ibatis.jdbc.SQL的两种使用方法:

1、匿名实现类+初始块

2、方法链(Method Chaining)


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 认知科技技术团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档