public class TRolesJdbcDao extends BaseJdbcDao implements ITRolesDao {
protected static class TRolesUpdate extends SqlUpdate {
protected TRolesUpdate(DataSource ds) {
super(ds, Sql.PUB_TROLES_UPDATE);
//参数类型设定
declareParameter(new SqlParameter(Types.VARCHAR));
declareParameter(new SqlParameter(Types.VARCHAR));
declareParameter(new SqlParameter(Types.CHAR));
declareParameter(new SqlParameter(Types.INTEGER));
declareParameter(new SqlParameter(Types.VARCHAR));
declareParameter(new SqlParameter(Types.VARCHAR));
}
}
sql .java 常量定义如下:
public static final String PUB_TROLES_UPDATE="UPDATE UPDATE PUB_TROLES SET ROLE_NAME=?,ROLE_ALIAS=?,IS_SYS=?,USERS_LIMIT=?,TEMPLATE_ID=? WHERE ROLE_ID=?";
由于写错了SQL语句,所有查询数据库会出错
但是当修改了sql.java后,把sql.class放到web应用里替换掉原来的类,错误依旧
只有把重新编译后的TRolesJdbcDao .java也重新拷贝才会生效
所有说明TRolesJdbcDao .java里面编译常量的时候是直接引用常量,而不是每次调用重新到sql.class里面取值
所以是不是说编译成功后,sql.class就相当于没用了???
发布后其实不需要该类了?
使用eclipse编译后是这个样子的,不知道是不是java规范里就是这样规定的
protected static class TRolesUpdate extends SqlUpdate {
protected TRolesUpdate(DataSource ds) {
super(ds, Sql.PUB_TROLES_UPDATE);
//参数类型设定
declareParameter(new SqlParameter(Types.VARCHAR));
declareParameter(new SqlParameter(Types.VARCHAR));
declareParameter(new SqlParameter(Types.CHAR));
declareParameter(new SqlParameter(Types.INTEGER));
declareParameter(new SqlParameter(Types.VARCHAR));
declareParameter(new SqlParameter(Types.VARCHAR));
}
}
sql .java 常量定义如下:
public static final String PUB_TROLES_UPDATE="UPDATE UPDATE PUB_TROLES SET ROLE_NAME=?,ROLE_ALIAS=?,IS_SYS=?,USERS_LIMIT=?,TEMPLATE_ID=? WHERE ROLE_ID=?";
由于写错了SQL语句,所有查询数据库会出错
但是当修改了sql.java后,把sql.class放到web应用里替换掉原来的类,错误依旧
只有把重新编译后的TRolesJdbcDao .java也重新拷贝才会生效
所有说明TRolesJdbcDao .java里面编译常量的时候是直接引用常量,而不是每次调用重新到sql.class里面取值
所以是不是说编译成功后,sql.class就相当于没用了???
发布后其实不需要该类了?
使用eclipse编译后是这个样子的,不知道是不是java规范里就是这样规定的
博客围绕Java代码中SQL常量引用展开。代码里TRolesJdbcDao类引用sql.java中的常量,修改sql.java后替换sql.class错误依旧,需重新编译TRolesJdbcDao.java才生效,由此探讨编译后sql.class是否无用,以及是否符合Java规范。





