Search in sources :

Example 11 with Sql

use of org.nutz.dao.sql.Sql in project nutz by nutzam.

the class OracleJdbcExpert method dropEntity.

@Override
public boolean dropEntity(Dao dao, Entity<?> en) {
    if (super.dropEntity(dao, en)) {
        if (en.getPks().isEmpty())
            return true;
        List<Sql> sqls = new ArrayList<Sql>();
        for (MappingField pk : en.getPks()) {
            if (pk.isAutoIncreasement()) {
                String sql = gSQL(DSEQ, en.getTableName(), pk.getColumnName());
                sqls.add(Sqls.create(sql));
            }
        }
        try {
            dao.execute(sqls.toArray(new Sql[sqls.size()]));
            return true;
        } catch (Exception e) {
        }
    }
    return false;
}
Also used : ArrayList(java.util.ArrayList) MappingField(org.nutz.dao.entity.MappingField) SQLException(java.sql.SQLException) Sql(org.nutz.dao.sql.Sql)

Example 12 with Sql

use of org.nutz.dao.sql.Sql in project nutz by nutzam.

the class SQLiteJdbcExpert method createEntity.

@Override
public boolean createEntity(Dao dao, Entity<?> en) {
    StringBuilder sb = new StringBuilder("CREATE TABLE " + en.getTableName() + "(");
    if (en.getPks().size() > 1 && en.getPkType() == PkType.ID) {
        return false;
    }
    // 创建字段
    boolean mPks = en.getPks().size() > 1;
    for (MappingField mf : en.getMappingFields()) {
        if (mf.isReadonly())
            continue;
        sb.append('\n').append(mf.getColumnNameInSql());
        // AUTOINCREMENT),但这样就无法定义多主键!!
        if (mf.isId() && en.getPkType() == PkType.ID) {
            sb.append(" INTEGER PRIMARY KEY AUTOINCREMENT,");
            continue;
        } else
            sb.append(' ').append(evalFieldType(mf));
        // 非主键的 @Name,应该加入唯一性约束
        if (mf.isName() && en.getPkType() != PkType.NAME) {
            sb.append(" UNIQUE NOT NULL");
        } else // 普通字段
        {
            if (mf.isUnsigned())
                sb.append(" UNSIGNED");
            if (mf.isNotNull())
                sb.append(" NOT NULL");
            if (mf.isPk() && !mPks) {
                // 复合主键需要另外定义
                sb.append(" PRIMARY KEY");
            }
            if (mf.hasDefaultValue())
                addDefaultValue(sb, mf);
        }
        sb.append(',');
    }
    // 创建主键
    List<MappingField> pks = en.getPks();
    if (mPks) {
        sb.append('\n');
        sb.append("constraint pk_").append(en.getTableName()).append(" PRIMARY KEY (");
        for (MappingField pk : pks) {
            sb.append(pk.getColumnNameInSql()).append(',');
        }
        sb.setCharAt(sb.length() - 1, ')');
        sb.append("\n ");
    }
    // 结束表字段设置
    sb.setCharAt(sb.length() - 1, ')');
    // 执行创建语句
    dao.execute(Sqls.create(sb.toString()));
    // 创建索引
    dao.execute(createIndexs(en).toArray(new Sql[0]));
    // 创建关联表
    createRelation(dao, en);
    return true;
}
Also used : MappingField(org.nutz.dao.entity.MappingField) Sql(org.nutz.dao.sql.Sql)

Example 13 with Sql

use of org.nutz.dao.sql.Sql in project nutz by nutzam.

the class Sqlserver2005JdbcExpert method createEntity.

public boolean createEntity(Dao dao, Entity<?> en) {
    StringBuilder sb = new StringBuilder("CREATE TABLE " + en.getTableName() + "(");
    // 创建字段
    for (MappingField mf : en.getMappingFields()) {
        if (mf.isReadonly())
            continue;
        sb.append('\n').append(mf.getColumnNameInSql());
        sb.append(' ').append(evalFieldType(mf));
        // 非主键的 @Name,应该加入唯一性约束
        if (mf.isName() && en.getPkType() != PkType.NAME) {
            sb.append(" UNIQUE NOT NULL");
        } else // 普通字段
        {
            if (mf.isUnsigned())
                sb.append(" UNSIGNED");
            if (mf.isNotNull())
                sb.append(" NOT NULL");
            if (mf.isAutoIncreasement())
                sb.append(" IDENTITY");
            if (mf.hasDefaultValue())
                addDefaultValue(sb, mf);
        }
        sb.append(',');
    }
    // 创建主键
    List<MappingField> pks = en.getPks();
    if (!pks.isEmpty()) {
        sb.append('\n');
        sb.append("PRIMARY KEY (");
        for (MappingField pk : pks) {
            sb.append(pk.getColumnNameInSql()).append(',');
        }
        sb.setCharAt(sb.length() - 1, ')');
        sb.append("\n ");
    }
    // 结束表字段设置
    sb.setCharAt(sb.length() - 1, ')');
    // 执行创建语句
    dao.execute(Sqls.create(sb.toString()));
    // 创建索引
    dao.execute(createIndexs(en).toArray(new Sql[0]));
    // 创建关联表
    createRelation(dao, en);
    // 添加注释(表注释与字段注释)
    addComment(dao, en, COMMENT_COLUMN);
    return true;
}
Also used : MappingField(org.nutz.dao.entity.MappingField) Sql(org.nutz.dao.sql.Sql)

Example 14 with Sql

use of org.nutz.dao.sql.Sql in project nutz by nutzam.

the class Db2JdbcExpert method createEntity.

// TODO not tested!!
public boolean createEntity(Dao dao, Entity<?> en) {
    StringBuilder sb = new StringBuilder("CREATE TABLE " + en.getTableName() + "(");
    // 创建字段
    for (MappingField mf : en.getMappingFields()) {
        if (mf.isReadonly())
            continue;
        sb.append('\n').append(mf.getColumnNameInSql());
        sb.append(' ').append(evalFieldType(mf));
        // 非主键的 @Name,应该加入唯一性约束
        if (mf.isName() && en.getPkType() != PkType.NAME) {
            sb.append(" UNIQUE NOT NULL");
        } else // 普通字段
        {
            if (mf.isNotNull() || mf.isPk())
                sb.append(" NOT NULL");
            if (mf.hasDefaultValue()) {
                addDefaultValue(sb, mf);
            }
            if (mf.isAutoIncreasement())
                sb.append(" generated by default as identity ");
            if (mf.isPk() && en.getPks().size() == 1) {
                sb.append(" primary key ");
            }
        }
        sb.append(',');
    }
    // 结束表字段设置
    sb.setCharAt(sb.length() - 1, ')');
    // 执行创建语句
    dao.execute(Sqls.create(sb.toString()));
    // 创建联合主键
    if (en.getPks().size() > 1) {
        sb = new StringBuilder();
        sb.append("ALTER TABLE ").append(en.getTableName()).append(" ADD CONSTRAINT PK_");
        sb.append(makePksName(en));
        sb.append(" PRIMARY KEY (");
        for (MappingField mf : en.getPks()) {
            sb.append(mf.getColumnNameInSql()).append(",");
        }
        sb.setCharAt(sb.length() - 1, ')');
        dao.execute(Sqls.create(sb.toString()));
    }
    // 创建关联表
    createRelation(dao, en);
    // 创建索引
    dao.execute(createIndexs(en).toArray(new Sql[0]));
    // 添加注释(表注释与字段注释)
    addComment(dao, en);
    return true;
}
Also used : MappingField(org.nutz.dao.entity.MappingField) Sql(org.nutz.dao.sql.Sql)

Example 15 with Sql

use of org.nutz.dao.sql.Sql in project nutz by nutzam.

the class SqlTemplate method queryForInt.

/**
     * 执行一个SQL查询操作,结果为一个int形数值。
     * 
     * @param sql
     *            包含变量占位符的SQL
     * @param vars
     *            变量map,无参数时,可为null
     * @param params
     *            参数map,无参数时,可为null
     * 
     * @return int数值,当查询为null时返回0
     */
public int queryForInt(String sql, Map<String, Object> vars, Map<String, Object> params) {
    Sql sqlObj = createSqlObj(sql, params);
    sqlObj.setCallback(Sqls.callback.integer());
    execute(sqlObj, vars, params);
    return sqlObj.getInt();
}
Also used : Sql(org.nutz.dao.sql.Sql)

Aggregations

Sql (org.nutz.dao.sql.Sql)69 Test (org.junit.Test)33 MappingField (org.nutz.dao.entity.MappingField)14 ArrayList (java.util.ArrayList)12 NutSql (org.nutz.dao.impl.sql.NutSql)9 Pet (org.nutz.dao.test.meta.Pet)9 ResultSet (java.sql.ResultSet)8 SQLException (java.sql.SQLException)8 FileSqlManager (org.nutz.dao.impl.FileSqlManager)8 Connection (java.sql.Connection)7 SqlManager (org.nutz.dao.SqlManager)7 SqlCallback (org.nutz.dao.sql.SqlCallback)5 Record (org.nutz.dao.entity.Record)4 PojoSql (org.nutz.dao.test.meta.issue1074.PojoSql)4 Dao (org.nutz.dao.Dao)3 DaoException (org.nutz.dao.DaoException)3 PreparedStatement (java.sql.PreparedStatement)2 HashMap (java.util.HashMap)2 List (java.util.List)2 LinkField (org.nutz.dao.entity.LinkField)2