0
点赞
收藏
分享

微信扫一扫

mybatis注解---@SelectProvider 使用手册


注解 @SelectProvider 示例如下,其他@XXXProvider 参照即可

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user WHERE id = #{id}")
    public User getUserById(@Param("id") Integer id);

    @SelectProvider(value = UserSqlProvider.class,  method = "getSqlNoArgs")
    public List<User> getBeanNoArgs();

    @SelectProvider(value = UserSqlProvider.class,  method = "getSqlWithArgs")
    public User getBeanWithArgs( Integer id);

    @SelectProvider(value = UserSqlProvider.class,  method = "getSqlWithArgs")
    public Map<String,Object> getMapWithArgs( Integer id);

    @SelectProvider(value = UserSqlProvider.class,  method = "getSqlByEntity")
    public User getBeanByEntity(User user);

    @SelectProvider(value = UserSqlProvider.class,  method = "getSqlListByEntity")
    public List<User> getBeanListByEntity(User user);

    @SelectProvider(value = UserSqlProvider.class,  method = "getSqlListByMap")
    public List<User> getBeanListByMap(Map<String,Object> map);

    @SelectProvider(value = UserSqlProvider.class,  method = "getSqlListByMap")
    public  List<Map<String,Object>> getBeanMapListByMap(Map<String,Object> map);
}

实现自己的UserSqlProvider,拼接SQL(参数最好是占位符#{},防止sql 注入)并返回

public class UserSqlProvider{

    public String getSqlNoArgs() {
        return "select * from user";
    }

    public String getSqlWithArgs(Integer id) {
        return "select * from user where id = "+ id;
    }

    public String getSqlByEntity(User user) {
        StringBuilder sqlBuilder = new StringBuilder("select * from user where 1=1 ");
        if (user.getId() != null){
            sqlBuilder.append("and id = #{id}");
        }
        if (user.getName() != null){
            sqlBuilder.append(" and name = '"+ user.getName()+"'");
        }
        return sqlBuilder.toString();
    }

    public String getSqlListByEntity(User user) {
        StringBuilder sqlBuilder = new StringBuilder("select * from user where 1=1 ");
        if (user.getId() != null){
            sqlBuilder.append("and id = #{id}");
        }
        if (user.getName() != null){
            sqlBuilder.append(" or name = '"+ user.getName()+"'");
        }
        return sqlBuilder.toString();
    }

    public String getSqlListByMap(Map<String,Object> map) {
        StringBuilder sqlBuilder = new StringBuilder("select * from user where 1=1 ");
        Object id = map.get("id");
        Object name = map.get("name");
        if (id != null){
            sqlBuilder.append("and id = #{id}");
        }
        if (name != null){
            sqlBuilder.append(" or name = '"+ name.toString() +"'");
        }
        return sqlBuilder.toString();
    }
}

如果sql 太过于复杂,还是在xml里面写吧


举报

相关推荐

IDEA使用手册

Typora使用手册

Consul使用手册

npm使用手册

Docker使用手册

Jackson使用手册

0 条评论