开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第二天,点击查看活动详情
PS:已经更文多少天,N就写几。一定要写对文案,否则文章不计入在内;模板句子需要带超链接。
如果发愁写SQL语句,在Mybatis中,提供了一种生成SQL语句的工具,以下为所在类包:
以上是官方封装好的给大家提供的一些基础功能的封装,当然我们也可以自己去封装一些常用的自定义写法。
抽象类AbstractSQL太大了,可以下源码自己查看:
可以看到很多熟悉的SQL语句的关键字,比如 JOIN ON ,DISTINCT等等。 我们可以看到一些很熟悉的字样:查询SELECT,SQL语句,FROM表,JOIN语句,内连接INNER_JOIN,左连接LEFT_JOIN等等哈,都是可以用API的方式去实现我们的目标。
直接上代码:
public static void main(String[] args) {
// 官网实例
SQL sql1 = new SQL() {{
SELECT("P.ID, P.USERNAME, P.PASSWORD, P.FULL_NAME");
SELECT("P.LAST_NAME, P.CREATED_ON, P.UPDATED_ON");
FROM("PERSON P");
FROM("ACCOUNT A");
INNER_JOIN("DEPARTMENT D on D.ID = P.DEPARTMENT_ID");
INNER_JOIN("COMPANY C on D.COMPANY_ID = C.ID");
WHERE("P.ID = A.ID");
WHERE("P.FIRST_NAME like ?");
OR();
WHERE("P.LAST_NAME like ?");
GROUP_BY("P.ID");
HAVING("P.LAST_NAME like ?");
OR();
HAVING("P.FIRST_NAME like ?");
ORDER_BY("P.ID");
ORDER_BY("P.FULL_NAME");
}};
System.out.println(sql1);
// 删除语句
SQL sql2 = new SQL();
sql2.DELETE_FROM("user");
sql2.WHERE("id = 1");
System.out.println("删除语句:");
System.out.println(sql2);
// 插入语句
SQL sql3 = new SQL().
INSERT_INTO("USER")
.VALUES("ID, USERNAME", "${id}, ${userName}")
.VALUES("REALNAME", "${realName}");
System.out.println("插入语句:");
System.out.println(sql3);
// 查询语句
String id = "id";
String userName = "userName";
String realName = "realName";
SQL sql4 = new SQL() {{
SELECT("U.ID, U.USERNAME, U.PASSWORD");
FROM("PERSON U");
if (id != null) {
WHERE("U.ID = ${id}");
}
if (userName != null) {
WHERE("U.USERNAME like ${userName}");
}
if (realName != null) {
WHERE("U.REALNAME like ${realName}");
}
ORDER_BY("U.LAST_NAME");
}};
System.out.println("查询语句:");
System.out.println(sql4);
// 更新修改语句
SQL sql5 = new SQL();
sql5.UPDATE("USER");
sql5.SET("USERNAME = ${userName}");
sql5.WHERE("ID = ${id}");
System.out.println("更新语句:");
System.out.println(sql5);
}
运行结果:
官网有每个版本新增的方法说明:
总结:
我还是喜欢自己写sql,感觉写这个语句的时间,足够我写一个啦!不过喜欢面向API编程的同学肯定是喜欢这个哈,SQL的学习成本还是蛮低的,推荐学习一下。
而且,我觉得这个也只是对传入字符的拼装而已,如果传入参数写错了,也没有校验功能。
END
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第二天,点击查看活动详情
PS:已经更文多少天,N就写几。一定要写对文案,否则文章不计入在内;模板句子需要带超链接。