MyBatis3源码深度解析(八)MyBatis常用工具类(一)SQL工具类

文章目录

  • 第3章 MyBatis常用工具类
    • 3.1 使用SQL类生成语句
      • 3.1.1 SQL工具类示例用法
      • 3.1.2 SQL工具类方法集锦
      • 3.1.3 SQL工具类源码解析

第3章 MyBatis常用工具类

3.1 使用SQL类生成语句

在使用JDBC API开发时,当使用Statement对象执行SQL时,SQL语句会嵌入到Java代码中。

如果SQL语句比较复杂,则需要在代码中对SQL语句进行拼接,当条件不固定时,还需要根据条件进行不同的拼接,同时还要注意空格、逗号等的使用。这就使得开发的难度大大增加,且代码的可维护性大大降低。

为了解决这个问题,MyBatis提供了一个SQL工具类。通过使用该工具类,可以方便地在Java代码中动态地构建SQL语句。

3.1.1 SQL工具类示例用法

示例如下:

@Test
public void testSelectSql() {
   
    String sql = new SQL(){
   {
   
        SELECT("id, name, age");
        SELECT("phone, birthday");
        FROM("user");
        WHERE("id = 2");
        OR();
        WHERE("name = 'user1'");
        ORDER_BY("id");
    }}.toString();
    System.out.println(sql);
}

@Test
public void testInsertSql() {
   
    String sql = new SQL(){
   {
   
        INSERT_INTO("user");
        VALUES("name, age, phone, birthday", "'user3', 45, '15789654532', '2015-12-13'");
    }}.toString();
    System.out.println(sql);
}

@Test
public void testUpdateSql() {
   
    String sql = new SQL(){
   {
   
        UPDATE("user");
        SET("name", "玉皇大帝");
        WHERE("id = 1");
    }}.toString();
    System.out.println(sql);
}

@Test
public void testDeleteSql() {
   
    String sql = new SQL(){
   {
   
        DELETE_FROM("user");
        WHERE("id = 1");
    }}.toString();
    System.out.println(sql);
}

控制台输出执行结果:

SELECT id, name, age, phone, birthday
FROM user
WHERE (id = 2) 
OR (name = 'user1')
ORDER BY id

INSERT INTO user
 (name, age, phone, birthday)
VALUES ('user3', 45, '15789654532', '2015-12-13')

UPDATE user
SET name, 玉皇大帝
WHERE (id = 1)

DELETE FROM user
WHERE (id = 1)

如上面的示例所示,SQL工具类可以调用SELECT()FROM()等方法构建SQL语句,这种方式能够有效地避免字符串拼接过程中出现的问题。

使用SQL工具类还可以很方便地在Java代码中根据条件动态地构建SQL语句。示例如下:

public void selectUser(User user) {
   
    String sql = new SQL(){
   {
   
        SELECT("id, name, age");
        SELECT("phone, birthday");
        FROM("user");
        if(user.getId() != null<

你可能感兴趣的:(MyBatis3源码深度解析,mybatis,sql,java,后端,数据库,开发语言)