通过封装的实体类生成sql语句(反射实现)

工作需要:要写一个生成sql语句的工具类,

入参 是封装数据的实体类,和表名,

返回 sql语句

实现方法是通过反射来获取实体类的字段集合,然后判断实体类中相应字段是否有值,有就拼接到字符串中。

public class AutoSqlUtils {
    //生成简单的查询语句
    public static String generaSelect(Object object,String tableName) throws IllegalAccessException {
        String sql = " select * from "+tableName;
        //获取对象所有的字段
        Field[] fields = object.getClass().getDeclaredFields();
        //辅助值判断是否需要加and
         boolean andflag=false;
        //辅助值判断加where
         boolean whereFlag=true;
        for (int i = 1; i < fields.length; i++) {
            //设置允许访问
            fields[i].setAccessible(true);
            //判断字段是否为空
            if(fields[i].get(object)!=null&&!"".equals(fields[i].get(object))){
                //判断要不要加where
                if(whereFlag){
                    sql+=" where ";
                }
                //判断要不要加and
                if(andflag){
                    sql+=" and ";
                }
                andflag=true;
                whereFlag=false;
                sql+=fields[i].getName()+"="+"'"+fields[i].get(object)+"'";

            }
        }
        return sql;

    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值