sql 转java_简单数据访问类,生成简单SQL,自动转换成java对象

importjava.lang.reflect.Field;importjava.util.Collection;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;public classSqlTemplate {private static Logger logger = LoggerFactory.getLogger(SqlTemplate.class);public final static String TABLE_PREFIX = "t";private String tableName = "";/*** 如果使用多Schema模式可以使用此参数*/

private String schemaPrefix = "";/*** 实体类对应的字段名*/

privateString[] fieldNames;/*** 数据库表对应的字段名称*/

privateString[] dbFieldNames;/*** 构造函数,解析类名,字段名,生成对应数据库中的表名和字段名

*@paramclazz*/

public SqlTemplate(Class>clazz) {//获取有get方法的字段

Field[] fields =ObjectUtil.getObjectFields(clazz);int fieldsLength =fields.length;

fieldNames= newString[fieldsLength];

dbFieldNames= newString[fieldsLength];for (int i = 0; i < fieldsLength; i++) {

Field f=fields[i];

String fieldName=f.getName();

fieldNames[i]=fieldName;

dbFieldNames[i]=StringUtil.camelToUnderline(fieldName);

}

String clazzName=clazz.getSimpleName();//数据库表名

tableName = schemaPrefix + StringUtil.camelToUnderline(TABLE_PREFIX +clazzName);

}publicString getInsertSQL() {//拼SQL语句

StringBuffer sql = newStringBuffer();

sql.append("INSERT INTO ");

sql.append("" + tableName + "");

sql.append(" (");for (int i = 0; i < dbFieldNames.length; i++) {

sql.append("" + dbFieldNames[i] + "");if (i < dbFieldNames.length - 1) {

sql.append(",");

}

}

sql.append(") ");

sql.append(" VALUES(");for (int i = 0; i < fieldNames.length; i++) {

String fieldName=fieldNames[i];

sql.append(":" +fieldName);if (i < fieldNames.length - 1) {

sql.append(",");

}

}

sql.append(") ");returnsql.toString();

}publicString getUpdateSQL() {//拼SQL语句

StringBuffer sql = newStringBuffer();

sql.append("UPDATE ");

sql.append("" + tableName + "");

sql.append(" SET ");for (int i = 1; i < dbFieldNames.length; i++) {

String dbFieldName=dbFieldNames[i];

String fieldName=fieldNames[i];

sql.append(dbFieldName);

sql.append("=:" +fieldName);if (i < dbFieldNames.length - 1) {

sql.append(",");

}

}

sql.append(" WHERE ");

sql.append(" id ");

sql.append("=:id");returnsql.toString();

}public String getCountSQL(Collectionwhere){

String[] whereArray=toStringArray(where);returngetCountSQL(whereArray);

}publicString getCountSQL(String[] where){

StringBuffer sql= newStringBuffer();

sql.append("SELECT count(0) FROM ");

sql.append("" + tableName + "");

sql.append(toWhereSQL(where));returnsql.toString();

}publicString getSelectSQL() {//拼SQL语句

StringBuffer sql = newStringBuffer();

sql.append("SELECT * FROM ");

sql.append("" + tableName + "");returnsql.toString();

}public String getSelectSQL(Collectionwhere) {if (where != null && !where.isEmpty()) {

String[] whereArray=toStringArray(where);returngetSelectSQL(whereArray);

}else{returngetSelectSQL();

}

}publicString getSelectSQL(String[] where) {//拼SQL语句

StringBuffer sql = newStringBuffer();

sql.append("SELECT * FROM ");

sql.append("" + tableName + "");//如果有where条件

sql.append(toWhereSQL(where));returnsql.toString();

}publicString getDeleteSQL() {//拼SQL语句

StringBuffer sql = newStringBuffer();

sql.append("DELETE FROM ");

sql.append("" + tableName + "");

sql.append(" WHERE ");

sql.append(" id ");

sql.append("=:id");returnsql.toString();

}publicString getDeleteSQL(String[] where) {//拼SQL语句

StringBuffer sql = newStringBuffer();

sql.append("DELETE FROM ");

sql.append("" + tableName + "");if (where != null && where.length > 0) {

sql.append(toWhereSQL(where));

}else{

sql.append(" WHERE ");

sql.append(" id ");

sql.append("=:id");

}returnsql.toString();

}privateString getDbFieldName(String fieldName) {for (int i = 0; i < fieldNames.length; i++) {

String fName=fieldNames[i];if(fieldName.equals(fName)) {returndbFieldNames[i];

}

}return null;

}publicString toWhereSQL(String[] where) {

StringBuffer sql= newStringBuffer();if (where != null && where.length > 0) {

sql.append(" WHERE ");for (int i = 0; i < where.length; i++) {

String w=where[i];

String dbFieldName=getDbFieldName(w);if (dbFieldName == null) {

logger.error("can not get the dbFieldName of {}", w);return null;

}

sql.append(" " + dbFieldName + " ");

sql.append("=:" +w);if (i < where.length - 1) {

sql.append(" and ");

}

}

}returnsql.toString();

}private String[] toStringArray(Collectionwhere) {if (where != null && !where.isEmpty()) {

String[] whereArray= newString[where.size()];int i = 0;for(String s : where) {

whereArray[i]=s;

i++;

}returnwhereArray;

}return null;

}public voidsetSchemaPrefix(String schemaPrefix) {this.schemaPrefix =schemaPrefix;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值