mybatis系列-sql 类的简单使用

mybatis 还有个比较有趣的功能,就是使用 SQL 类生成 sql,有点类似于 hibernate 或者像 php 的 laravel 框架等的,就是把sql 这种放在 xml 里或者代码里直接写 sql 用对象的形式

select语句

比如这样

1
2
3
4
5
6
7
8
public static void main(String[] args) {
String selectSql = new SQL() {{
SELECT("id", "name");
FROM("student");
WHERE("id = #{id}");
}}.toString();
System.out.println(selectSql);
}

打印出来就是

1
2
3
SELECT id, name
FROM student
WHERE (id = #{id})

应付简单的 sql 查询基本都可以这么解决,如果习惯这种模式,还是不错的,
其实以面向对象的编程模式来说,这样是比较符合面向对象的,先不深入的解析这块的源码,先从使用角度讲一下

比如 update 语句

1
2
3
4
5
String updateSql = new SQL() {{
UPDATE("student");
SET("name = #{name}");
WHERE("id = #{id}");
}}.toString();

打印输出就是

1
2
3
UPDATE student
SET name = #{name}
WHERE (id = #{id})

insert 语句

1
2
3
4
5
6
String insertSql = new SQL() {{
INSERT_INTO("student");
VALUES("name", "#{name}");
VALUES("age", "#{age}");
}}.toString();
System.out.println(insertSql);

打印输出

1
2
3
INSERT INTO student
(name, age)
VALUES (#{name}, #{age})

delete语句

1
2
3
4
5
String deleteSql = new SQL() {{
DELETE_FROM("student");
WHERE("id = #{id}");
}}.toString();
System.out.println(deleteSql);

打印输出

1
2
DELETE FROM student
WHERE (id = #{id})