public class ClazUtil { private static Logger logger = LoggerFactory.getLogger(ClazUtil.class); public static String verifyDTO(Object o,String[] names) { if(o == null){ String msg = "接口参数data不能为空!"; logger.error(msg); return msg; } if(names == null || names.length == 0){ String msg = "名字不能为空!"; logger.error(msg); return ""; } StringBuffer error = new StringBuffer(); Object[] values = ClazUtil.getFiledValues(o); String[] types = ClazUtil.getFiledTypes(o); if(values.length != names.length) { logger.error("名字和属性个数不匹配!"); return ""; } for(int i = 0;i < values.length;i++){ Object value = values[i]; String type = types[i]; String name = names[i]; try { Class<?> typeClaz = Class.forName(type); if(typeClaz == String.class){ if(StringUtils.isEmpty(String.valueOf(value)) || value == null) error.append(name).append("为空!\n"); }else{ if(value == null) error.append(name).append("不能为空!\n"); } } catch (ClassNotFoundException e) { logger.error(e.getMessage()); continue; } } return error.toString(); } /** * 获取对象的所有属性值,返回一个对象数组 */ public static Object[] getFiledValues(Object o) { Field[] fields = o.getClass().getDeclaredFields(); Object[] value = new Object[fields.length]; for (int i = 0; i < fields.length; i++) { Object mValue = null; try { String filedName = fields[i].getName(); String firstLetter = filedName.substring(0, 1).toUpperCase(); String getter = "get" + firstLetter + filedName.substring(1); Method method = o.getClass().getMethod(getter, new Class[] {}); mValue = method.invoke(o, new Object[] {}); } catch (Exception e) { logger.error(e.getMessage(), e); } value[i] = mValue; } return value; } /** * <p>date: 2015年8月13日 上午10:06:03</p> * <p>description: 获取对象的所有类型 </p> * @author muzi131313 * @param * @return */ public static String[] getFiledTypes(Object o){ Field[] fields = o.getClass().getDeclaredFields(); String[] fieldTypes = new String[fields.length]; for (int i = 0; i < fields.length; i++) { String type = fields[i].getType().toString(); if(type.contains("class ")) type = type.replaceAll("class ", ""); fieldTypes[i] = type; } return fieldTypes; } /** * <p>date: 2015年6月24日 下午12:18:09</p> * <p>description: 获取实例变量名称和@column注解中name </p> * @author muzi131313 * @param 带有@Column注解的pojo的类 * @return Map<filedName,columnName> */ public static Map<String,String> getFiledNameAndColumnName(Class<?> claz) { Field[] fields = claz.getDeclaredFields(); Map<String,String> map = new HashMap<String,String>(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; String fieldName = field.getName(); Annotation[] as = field.getAnnotations(); for(Annotation a : as){ Class<?> type = a.annotationType(); if(type == javax.persistence.Column.class){ try { javax.persistence.Column c = (javax.persistence.Column)a; String columnName = c.name(); if(StringUtils.isEmpty(columnName)){ columnName = fieldName; } map.put(fieldName, columnName); } catch (Exception e) { e.printStackTrace(); } } } } return map; } public static void main(String[] args) { } }
相关推荐
2、该工具类可以将数据库表列字段转化为对应的Java实体类字段。生成的实体类字段格式清晰易读,且符合Java命名规范。通过使用该工具类,可以大大提高开发效率,节约时间成本。 3、该工具类使用非常简单。只需要...
本文是mysql 数据库 问题一 将表一的数据导入表二...在表中插入数据时,某一字段取数据库中该字段的最大值,并+1,这个问题很多人都说用存储过程什么的解决,其实使用insert 和 select 结合就可以很好的解决这个问题啊
ddl语言自定义数据库字段 <!--#include virtual="/public/back_top.asp"--> <html><br><head><br><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link href="member/css/common....
例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0 mysql> alter table MyClass add passtest int(4) default '0' 8、更改表名: 命令:rename table 原表名 to 新表名; 例如:在表MyClass名字...
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 ...
Oracle中查询某个表的总字段数,要用SQL语句,或者在PL/SQL里面 代码如下:select count(column_name) from user_tab_columns where table_name=’T_B_AUDITOR’能够查出来指定的那张表的字段数。下面是通过大致查看...
方案一: 在XML映射文件中使用的resultMap, 优点:可以被重复使用。 通过里面的id标签和result标签来建立映射关系,由property和column分别指定实体类属性和数据表的列名。 方案二: 让字段的别名与实体类的...
在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都对应一行。 列名 数据类型 说明 name sysname 对象名 id int 对象标识号 xtype char(2) 对象类型。可以是以下对象类型...
关系(Relation)一个关系逻辑上对应一张二维表,可以为每个关系取一个名称进行标 识。 列(Column)表中的列,也称作字段(Field)或属性(Attribute)。表中每一列有一 个名称,称为列名、字段名或属性名,每一列...
数据库中表的其它字段所对应的持久化对象中的属性名" column="对应数据库中表的其它字段名" type="java.lang.String(数据库中其它字段的数据类型)"/> 三.配置hibernate.cfg.xml文件:该文件需放在src目录下 ...
dictionary 全部数据字典表的名称和解释,它有一个同义词dict dict_column 全部数据字典表里字段名称和解释 如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句: SQL>select * from dictionary ...
线程安全的,一个数据库对应一个Sessionfactory(一般一个应用程序对应一个SessionFactory就够了) 3.是一个很大的缓存,本身维护了一个可配置的二级缓存 4.用来构建Session对象 Configuration 1.启动和配置...
例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为 mysql> alter table MyClass add passtest int(4) default ’′ 8、更改表名: 命令:rename table 原表名 to 新表名; 例如:在表MyClass...
4、使用一个用户自定义的类完成对一张数据库表的schema定义,继承一个DBObject或者 MultiDBObject类(这个名字学习自一个开源项目expresso,功能也类似),只要 定义好schema,也就是手动设定一下每个column的名称、...
判断集合是否为空 测试 可以利用url直接查询数据库,能否访问得到数据 报错 启动类 没有扫描到 @MapperScan("com.leyou.item.mapper") ,目录结构关系 访问网页报错 CORS policy: No 'Access-Control-Allow-...
头信息就不多说了,首先写好一个hibernate-mapping首尾标记,在标记内映射我们相对应的实体类...id标记为我们数据库的主键配置相关信息,同理name属性中的属性值为我们实体类对象的属性,column为数据库对应表的字段。
这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。 CursorType Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括...
如果想创建一个空的数据窗口,可以只定义: release 12; table() 5.table(column行) 是第几个column,它的ID就是多少,其中也定义了是否可以update时和更新到数据表的字段名 6.table(retrieve行) 检索数据时使用的SQL...
好比是一张部门表,在一张表里表现部门的上下级关系,一个是主键,肯定还有一个字段为连接到该主键的外键的列名,这里的 parentColumn 指的就是这个列名。 nullParentValue 如果当前的 Level 是有上下级关系(设置...
一、数据库基本操作 ...5. 创建一个新的字段 alter table students add column nal char(64); PS: 本人是很讨厌上面这种“简单解释+代码”的博客。其实我当时在mysql终端写了很多的实例,不过因为当时电脑运行一