SQL封装类-selectsql

文章背景:在公司中项目比较老,对于dao层 的操作是使用string.format方法进行原始的拼接。做 了一下对于sql封装,方便自己以后写代码;

package com.daosql;


import java.util.Iterator;
import java.util.Map;

/**
 *
 */
public class SelectSql {

    //判断条件;如果count==0开始没有拼接where方法。如果count==1,开始拼接a;
    private static  Integer COUNT=0;

    /**
     * @param map  这是拼接的条件
     * @param sql  这是select的环境等
     * @param end  这是后面group等等语句
     * @return     拼接好的语句
     */

    public static StringBuilder sqlAppendMap(Map<String,Object> map, StringBuilder sql,StringBuilder end) {
        if (map.isEmpty()) {
            return  sql;
        }
        Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
        Integer count=0;
        while (iterator.hasNext()) {
            Map.Entry<String,Object> entry= iterator.next();
            String str = addSql(entry, count);
            if ("".equals(str)) {
                continue;
            }
            sql.append(str);
            count=1;

        }

        return sql.append(" ").append(end);
    }

    /**
     *
     * @param map   where拼接后的条件
     * @param sql   select a from b
     * @return 返回  sql select a from b和map中key不为空和key不等于null。Object不为空的情况
     * */

    public static StringBuilder sqlAppendMap(Map<String,Object> map, StringBuilder sql) {
        if (map.isEmpty()) {
            return  sql;
        }
        Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
        Integer count=0;
        while (iterator.hasNext()) {
            Map.Entry<String,Object> entry= iterator.next();
            String str = addSql(entry, count);
            if ("".equals(str)) {
                continue;
            }
            sql.append(str);
            count=1;

        }

        return sql;
    }




    /**
     *
     * @param e map中的每一个entry
     * @param i 判断条件:如果为0则是一开始拼接字符串:where 拼接字符串;如果是i==1就是添加一个and的方法。
     * @return  返回拼接后的sql
     */
    private static final String addSql(Map.Entry e,Integer i) {
        if ("".equals(e.getKey()) || isEmpty(e.getValue())||e.equals(e.getKey())) {
            return  "";
        }
        if(i==0){
            return " where " + e.getKey() + "=" + e.getValue();
        }
        return  " and " + e.getKey() + "=" + e.getValue();
    }



    /**
     *
     * @param str 判断对象是否为空
     * @return  返回boolean对象;
     * 如果对象为null和str字符串是否为“”
     *
     */
    private static final boolean isEmpty(Object str) {
        return str == null || "".equals(str);
    }
















}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙龙啊啊啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值