发布网友 发布时间:2022-04-09 01:23
共6个回答
懂视网 时间:2022-04-09 05:45
/** 2 * 基础查询语句 3 * 返回类型的属性字符串Sql 4 * @author: InkYi 5 * 修改时间:2016年5月11日 - 上午10:06:00<br/> 6 * 功能说明:<br/> 7 * @param clazz 8 * @return "id,name,sex....." 9 */ 10 private String baseSelectSQL(Class clazz){ 11 StringBuffer sb = new StringBuffer(); 12 Field[] fields = clazz.getDeclaredFields(); 13 for (int i = 0; i < fields.length; i++) { 14 Field field = fields[i]; 15 field.setAccessible( true ); 16 sb.append(field.getName()); 17 sb.append(", "); 18 try { 19 Object object = field.get(clazz); 20 System.out.println(object.toString()); 21 } catch (IllegalArgumentException | IllegalAccessException e) { 22 e.printStackTrace(); 23 } 24 } 25 int lastIndexOf = sb.lastIndexOf(", "); 26 sb.delete(lastIndexOf, sb.length()); 27 return sb.toString(); 28 }1 /** 2 * 基础条件语句 3 * 只返回属性不为空的属性和值 4 * @author: InkYi 5 * 修改时间:2016年5月11日 - 上午10:52:26<br/> 6 * 功能说明:<br/> 7 * @param obj 8 * @return SELECT & DELETE-->id=‘0‘ AND name=‘inkyi‘ 9 * 10 */ 11 private String baseWhereSQL(Object obj){ 12 StringBuffer sb = new StringBuffer(); 13 Class<? extends Object> clazz = obj.getClass(); 14 Field[] fields = clazz.getDeclaredFields(); 15 try { 16 for (int i = 0; i < fields.length; i++) { 17 Field field = fields[i]; 18 field.setAccessible(true); 19 String name = field.getName(); 20 Object value = field.get(obj); 21 Class<?> type = field.getType(); 22 if(value!=null){ 23 //处理时间格式 24 if(type == Date.class){ 25 value = DateUtils.dateStr((Date) value, "yyyy-MM-dd HH:mm:ss"); 26 } 27 sb.append(name).append("=") 28 .append("‘").append(value).append("‘") 29 .append(" AND "); 30 } 31 } 32 } catch (IllegalArgumentException | IllegalAccessException e) { 33 e.printStackTrace(); 34 } 35 int lastIndexOf = sb.lastIndexOf(" AND "); 36 sb.delete(lastIndexOf, sb.length()); 37 return sb.toString(); 38 }
1 /** 2 * 基础更新语句 3 * 只返回属性不为空的属性和值 4 * @author: InkYi 5 * 修改时间:2016年5月11日 - 上午11:11:25<br/> 6 * 功能说明:<br/> 7 * @param obj 8 * @return >id=‘0‘, name=‘inkyi‘, sex=‘1‘ 9 */ 10 private String baseUpdateSQL(Object obj){ 11 StringBuffer sb = new StringBuffer(); 12 Class<? extends Object> clazz = obj.getClass(); 13 Field[] fields = clazz.getDeclaredFields(); 14 try { 15 for (int i = 0; i < fields.length; i++) { 16 Field field = fields[i]; 17 field.setAccessible(true); 18 String name = field.getName(); 19 Object value = field.get(obj); 20 Class<?> type = field.getType(); 21 if(value!=null){ 22 //处理时间格式 23 if(type == Date.class){ 24 value = DateUtils.dateStr((Date) value, "yyyy-MM-dd HH:mm:ss"); 25 } 26 sb.append(name).append("=") 27 .append("‘").append(value).append("‘") 28 .append(", "); 29 } 30 } 31 } catch (IllegalArgumentException | IllegalAccessException e) { 32 e.printStackTrace(); 33 } 34 int lastIndexOf = sb.lastIndexOf(", "); 35 sb.delete(lastIndexOf, sb.length()); 36 return sb.toString(); 37 }
根据反射生成SQL语句
标签:
热心网友 时间:2022-04-09 02:53
为什么不明白原理就不能用了呢。其实,HIBERNATE就是运用了HBM.XML这个文件来映射数据库和BEAN的,中间运用了JAVA反射的机制,自动生成了SQL语句。实际上是HIBERNATE自动为你生成了SQL语句而已。如果你硬要自己用SQL的话,应该也可以用session.createSQLQuery(sql).executeUpdate()来实现你的需求热心网友 时间:2022-04-09 04:11
它是提倡一种叫nosql的东西,它不建议大家直接写sql语句,它自己封装了一些基本的方法。它增删改,都对于从数据库orm来的类来说的。对类进行操作,以便达到增删改。热心网友 时间:2022-04-09 05:45
先实例化个session对象热心网友 时间:2022-04-09 07:37
可以通过HibernateTemplate.getSession.createQuary(tsql)得到一个Quary,然后根据Quary提供的方法得到结果集,hibernate底层也是jdbc热心网友 时间:2022-04-09 09:45
直接写sql语句就行了啊啊 代替以前的HQL