3.4 SQL annotation - xphsc/EasyJdbc GitHub Wiki

SQL 注解 用法

注意: 从1.0.6及以上版本

通用 easyjdbc 中的 SQL 注解方法只需定义接口或继承EasyJdbcDao<泛型>例如下面:

/**
  * 使用的注解,默认是@Dao 推荐@Repository
  */
@Repository
public  interface  UserDao {
// 注解SQL方法 
    
}

/**
  * 继承EasyJdbcDao<泛型>大量公共方法
  */
@Repository
public  interface  UserDao extends EasyJdbcDao<User> {
 // 注解SQL方法 
}

6.2 SQL 注解

6.2.1 @SqlSelect(与mybatis注解@Select用法相似)查询

6.2.1.1 纯接口无继承EasyJdbcDao<泛型>

   @SqlSelect(value = "select * from t_user",entityClass=User.class)
    public List<User> listUser();

6.2.1.2 继承EasyJdbcDao<泛型>

   @SqlSelect(value = "select * from t_user")
    public List<User> listUser();

6.2.1.3 @SqlParam传参

  @SqlSelect(value = "select * from t_user where id=#{id}",entityClass=User.class)
 //还可以使用 :id 
 //@SqlSelect(value = "select * from t_user where id=:id",entityClass=User.class)
    public User getUserById(@SqlParam("id")Integer id);

6.2.1.4 Map传参

  @SqlSelect(value = "select * from t_user where id=#{id}",entityClass=User.class)
    public List<User> getUserByMapId(Map map);

6.2.1.5 Pojo对象传参(2.1.1)

  @SqlSelect(value = "select * from t_user where id=#{user.id}",entityClass=User.class)
    public List<User> selectByUser(@SqlParam("user") User user);

6.2.1.6 返回Map

  @SqlSelect(value = "select * from t_user where id=#{id}")
    public List<Map> getUserByMapId(Map map);

6.2.1.7 动态映射对象

   @SqlSelect(value = "select * from t_user where id=:id",entityClass=UserDTO.class)
    public UserDTO getUserById(@SqlParam("id")Integer id);

6.2.1.8 分页

//pageNum=1,pageSize分页

@SqlSelect(
value = "select * from t_user where user_name=#{userName}",
entityClass=UserDTO.class
)
    public PageInfo<UserDTO> listUser(@SqlParam("userName")String  userName, @SqlParam("pageNum")Integer pageNum, @SqlParam("pageSize")Integer pageSize);
//offset=0,limit分页

@SqlSelect(
value = "select * from t_user where user_name=#{userName}",
entityClass=UserDTO.class
)
    public PageInfo<UserDTO> listUser(@SqlParam("userName")String  userName, @SqlParam("offset")Integer offset, @SqlParam("limit")Integer limit);

6.2.1.9 PageInfo分页

@SqlSelect(
value = "select * from t_user where user_name=#{user.userName}",
entityClass=UserDTO.class
 public PageInfo<UserDTO> listUser(@SqlParam("user") User user, PageInfo pageInfo);
)

6.2.2 @SqlSelectProvider查询(与mybatis注解@SelectProvider用法相似)

6.2.2.1 查询

sql 对象
public class UserSqlProvider{
    public String listUserBySql(){
        return new SQL(){{
            SELECT("*");
            FROM("t_user");
        }
        }.toString();
    }
    }
}
 @SqlSelectProvider(type= UserSqlProvider.class,method = "listUserBySql",entityClass =UserDTO.class )
    public List<UserDTO> listUserBySql();

6.2.2.2 @SqlParam传参

sql 对象
public class UserSqlProvider{
   public String getUserBySql(){
 return new SQL(){{
            SELECT("*");
            FROM("t_user");
            WHERE("id=#{id}");
        }
        }.toString();
    }
}

 @SqlSelectProvider(type= UserSqlProvider.class,method = "getUserBySql",entityClass =UserDTO.class )
    public UserDTO getUserBySql((@SqlParam("id")Integer id));

6.2.2.2 Map动态传参

sql 对象
public class UserSqlProvider{
  public String listUserBySqlMap(Map map){
  return new SQL() {{
                SELECT("*");
                FROM("t_user");
                if (Maps.containsKey(map, "id")) {
                    if (Maps.getInteger(map, "id") != null) {
                        WHERE("id=#{id}");
                    }
                }
            }

        }.toString();
    }
}
@SqlSelectProvider(type= UserSqlProvider.class,method = "listUserBySqlMap",entityClass =UserDTO.class )
    public List<UserDTO> listUserBySqlMap(Map map);

6.2.2.2 Pojo对象动态传参

sql 对象
public class UserSqlProvider{
  public String listUserByUser(User user){
  return new SQL() {{
                SELECT("*");
                FROM("t_user");
                if(StringUtils.isNotBlank(user.getUserName()))
                        WHERE("user.id=#{id}");
                 }
            }}.toString();
    }
}
@SqlSelectProvider(type= UserSqlProvider.class,method = "listUserByUser",entityClass =UserDTO.class )
    public List<UserDTO> listUserBySqlMap(@SqlParam("user") User user);

6.2.3 SqlInsert,SqlInsertProvider 新增注解

6.2.3.1 @SqlInsert

//对象传参
@SqlInsert("INSERT INTO t_user(id,user_name) VALUES(#{user.id},#{user.userName})")
    Integer saveUser(@SqlParam("user") User user);
//单值传参
   @SqlInsert("INSERT INTO t_user(id,user_name) VALUES(#{id},#{userName})")
    Integer saveUser(@SqlParam("id") Integer id,@SqlParam("userName") String userName);
//返回主键值
  @SqlInsert("INSERT INTO t_user(id,user_name) VALUES(#{id},#{userName})")
    @SqlOptions(useGeneratedKeys = true)
    Integer saveUser(@SqlParam("id") Integer id,@SqlParam("userName") String userName);

6.2.3.2 @SqlInsertProvider

//SQL对象
public class UserProvider {
//SQL对象方法参数Map map可传可不传  如果通过MAP动态判断 就必须传
  public String   saveUserBySql(Map map){
      SQL sql=new SQL();
      sql.INSERT_INTO("t_user").
              VALUES("id,user_name","#{id},#{userName}");
       return sql.toString();       
  }
}
 @SqlInsertProvider(type = UserProvider.class,method = "saveUserBySql")
    Integer saveUserBySql(Map map);

6.2.3.3 @SqlInsertProvider Pojo对象动态传参

//SQL对象
public class UserProvider {
public String saveByUser(User user){
return new SQL() {{
INSERT_INTO(t_user");
VALUES("id,user_name","#{user.id},#{user.userName}")
}}.toString();
}
}
 @SqlInsertProvider(type = UserProvider.class,method = "saveByUser")
    Integer saveUserBySql(@SqlParam("user") User user);

6.2.4 SqlUpdate,SqlUpdateProvider修改注解

6.2.4.1 @SqlUpdate

//对象传参
@SqlUpdate("UPDATE   t_user SET user_name=#{user.userName} WHERE id=#{user.id})")
    Integer updateUser(@SqlParam("user") User user);
  //单值传参
    @SqlUpdate("UPDATE   t_user SET user_name=#{userName} WHERE id=#{id})")
    Integer updateUser(@SqlParam("id") Integer id,@SqlParam("userName") String userName);

6.2.4.2 @SqlUpdateProvider

//SQL对象
public class UserProvider {
//SQL对象方法参数Map map可传可不传  如果通过MAP动态判断 就必须传
    public String   updateUserBysql(Map map){
        SQL sql=new SQL();
        sql.UPDATE("t_user").
        SET("user_name=#{userName}").WHERE("id=#{id}");
        return sql.toString();
    }
}
//MAP
 @SqlUpdateProvider(type = UserProvider.class,method = "updateUserBysql")
    Integer updateUserBysql(Map map);
//
  @SqlUpdateProvider(type = UserProvider.class,method = "updateUserBysql")
    Integer updateUserBysql(@SqlParam("id") Integer id,@SqlParam("userName") String userName);

6.2.4.3 @SqlUpdateProvider Pojo对象动态传参

//SQL对象
public class UserProvider {
    public String   updateByUser(User user){
        return new SQL() {{
        UPDATE(t_user");
        SET("user_name=#{user.userName}");
       if(StringUtils.isNotBlank(user.getId()))
            WHERE("user.id=#{user.id}");
                 }
        }}.toString();
    }
}
  @SqlUpdateProvider(type = UserProvider.class,method = "updateByUser")
    Integer updateUserBysql(@SqlParam("user") User user);

6.2.5 SqlDelete,SqlDeleteProvider删除注解

6.2.5.1 @SqlDelete

 @SqlDelete("DELETE FROM    t_user WHERE id=#{id})")
    Integer deleteUser(@SqlParam("id") Integer id);

6.2.5.2 @SqlDeleteProvider

//SQL对象方法参数Map map可传可不传  如果通过MAP动态判断 就必须传
 public String   deleteUserBysql(Map map){
        SQL sql=new SQL();
        sql.DELETE_FROM("t_user").
                WHERE("id=#{id}");
        return sql.toString();
    }
 @SqlDeleteProvider(type = UserProvider.class,method = "deleteUserBysql")
    Integer deleteUserBysql(Map map);
 @SqlDeleteProvider(type = UserProvider.class,method = "deleteUserBysql")
   Integer deleteUserBysql(@SqlParam("id") Integer id);

6.2.5.3 @SqlDeleteProvider Pojo对象动态传参

 public String   deleteByUser(User user){
        return new SQL() {{
        DELETE_FROM(t_user");
       if(StringUtils.isNotBlank(user.getId()))
            WHERE("user.id=#{user.id}");
                 }
        }}.toString();
    }
 @SqlDeleteProvider(type = UserProvider.class,method = "deleteByUser")
   Integer deleteUserBysql(@SqlParam("user") User user);
⚠️ **GitHub.com Fallback** ⚠️