如果发愁写SQL语句,在Mybatis中,提供了一种生成SQL语句的工具,以下为所在类包:
抽象类AbstractSQL<T>太大了,可以下源码自己查看:
可以看到很多熟悉的SQL语句的关键字,比如 JOIN ON ,DISTINCT等等。
直接上代码:
publicstaticvoidmain(String[] args) { // 官网实例SQLsql1=newSQL() {{ 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); // 删除语句SQLsql2=newSQL(); sql2.DELETE_FROM("user"); sql2.WHERE("id = 1"); System.out.println("删除语句:"); System.out.println(sql2); // 插入语句SQLsql3=newSQL(). INSERT_INTO("USER") .VALUES("ID, USERNAME", "${id}, ${userName}") .VALUES("REALNAME", "${realName}"); System.out.println("插入语句:"); System.out.println(sql3); // 查询语句Stringid="id"; StringuserName="userName"; StringrealName="realName"; SQLsql4=newSQL() {{ 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); // 更新修改语句SQLsql5=newSQL(); sql5.UPDATE("USER"); sql5.SET("USERNAME = ${userName}"); sql5.WHERE("ID = ${id}"); System.out.println("更新语句:"); System.out.println(sql5); }
运行结果:
官网有每个版本新增的方法说明:(阅读原文可跳到官网)
总结:
我还是喜欢自己写sql,感觉写这个语句的时间,足够我写一个啦!
而且,这个也只是对传入字符的拼装而已,如果传入参数写错了,也没有校验功能。
END