mybatis之SQL语句构建器的使用
sql语句构建器是什么?为什么要使用sql语句构建器?sql语句构建器是mybatis提供的一种构建sql语句的方式,因为在编写比较复杂的slq语句时,如果使用字符拼接的方式很容易一不留神就编写错误,比如差个逗号,查个引号之类的错误屡见不鲜,而sql语句构建器的存在就是为了我们在编写sql语句的时候,进行分开编写,把错综复查的sql语句简化分来。sql构建器的核心使用sql构建器的核心就是使用m
·
sql语句构建器是什么?为什么要使用sql语句构建器?
sql语句构建器是mybatis提供的一种构建sql语句的方式,因为在编写比较复杂的slq语句时,如果使用字符拼接的方式很容易一不留神就编写错误,比如差个逗号,查个引号之类的错误屡见不鲜,而sql语句构建器的存在就是为了我们在编写sql语句的时候,进行分开编写,把错综复查的sql语句简化分来。
sql构建器的核心
使用sql构建器的核心就是使用mybatis提供的核心SQL类,使用该类下面的方法,就能够完成sql的构建。
SQL类相关API
- 关系图
我们可以看到SQL类是实现了AbstractSQL抽象类,我们构建sql所需的方法都在抽象父类中,当时抽象类没法创建对象,所有我们使用其SQL子类。
-
相关常用方法
1. SELECT(String) SELECT(String...) 代替SELECT关键字,参数为要查询的字段,可以多次使用此方法进行追加要查询的字段。 2. SELECT_DISTINCT(String) SELECT_DISTINCT(String...) 查询并去重,代替SELECT DISTINCT 关键字,参数为要查询的字段。 3. FROM(String) FROM(String...) 代替FROM关键字,参数通常是一个表名或别名。 4. OR() 使用 OR 来分隔当前的 WHERE 子句条件 5. AND() 使用 AND 来分隔当前的 WHERE子句条件 6. GROUP_BY(String) GROUP_BY(String...) 代替 GROUP BY 关键字,参数为要根据分组的字段名。 ...其他方法可以去官网进行查看 ...官网地址:https://mybatis.org/mybatis-3/zh/statement-builders.html
配合构建器使用的标签
- 查询操作使用的标签
- @SelectProvider:生成查询用的 SQL 语句注解。
- type 属性:生成 SQL 语句功能类对象
- method 属性:指定调用方法
- 新增操作使用的标签
- @InsertProvider:生成新增用的 SQL 语句注解。
- type 属性:生成 SQL 语句功能类对象
- method 属性:指定调用方法
- @InsertProvider:生成新增用的 SQL 语句注解。
- 修改操作使用的标签
- @UpdateProvider:生成修改用的 SQL 语句注解。
- …属性与前面的相同
- @UpdateProvider:生成修改用的 SQL 语句注解。
- 删除操作使用的标签
- @DeleteProvider:生成删除用的 SQL 语句注解。
- …属性与前面的相同
- @DeleteProvider:生成删除用的 SQL 语句注解。
使用示例
-
实体类
//学生实体类 public class Student { private Integer id; private String name; private Integer age; //...构造及get、set方法省略 }
-
接口
//关于学生的数据访问接口 public interface StudentMapper { //查询全部 //以下相当于 -> @Select("SELECT * FROM student") // type:使用构造器构造sql语句所在类的字节码对象。 method:获取哪一个方法中构建的sql语句 @SelectProvider(type = ReturnSql.class , method = "getSelectAll") public abstract List<Student> selectAll(); }
-
构造sql的类
//在此类中使用构造器,构造sql语句 public class ReturnSql { //定义方法,返回查询的sql语句 public String getSelectAll() { //使用内部类的形式构建 return new SQL() { //这个大括号 -> {} 表示构造代码块,表示每一次创建此对象,都会执行构造代码块中的代码 { //表示查询学生表中的左右记录 SELECT("*"); FROM("student"); } //toString()方法表示将构造的sql语句转化为一个字符串,并返回 }.toString(); } }
可以看出此方法比我们直接在接口上编写sql语句要麻烦一点,所以使用sql构建器构建sql的这种情况使用不多。
更多推荐
已为社区贡献1条内容
所有评论(0)