级联查询

Mybatis3.4.x技术内幕(二十一):参数设置、结果封装、级联查询、延迟加载原理分析

你离开我真会死。 提交于 2019-12-16 15:44:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Mybatis在执行查询时,其参数设置、结果封装、级联查询、延迟加载,是最基本的功能和用法,我们有必要了解其工作原理,重点阐述级联查询和延迟加载。 1、MetaObject MetaObject用于反射创建对象、反射从对象中获取属性值、反射给对象设置属性值,参数设置和结果封装,用的都是这个MetaObject提供的功能。 public static MetaObject forObject(Object object, ObjectFactory objectFactory, ObjectWrapperFactory objectWrapperFactory, ReflectorFactory reflectorFactory) { if (object == null) { return SystemMetaObject.NULL_META_OBJECT; } else { return new MetaObject(object, objectFactory, objectWrapperFactory, reflectorFactory); } } public Object getValue(String name) { //... } public void setValue(String name,

hibernate中只选取某些列的写法

喜欢而已 提交于 2019-12-09 13:59:06
在普通的sql中,为了选取某些列,其实是很简单的,就select 列名就可以了,但在hibernate中,一般 都是sql="from user ....";但这样其实某些时候,效率还是很低的,在hibernate做的时候,要这样了,如下: String hql="select new map(t.title as title,t.id as id,t.link as link,t.linktitle as linktitle) from Article as t where t.category="+categoryid+" order by t.uploadtime desc"; Query query= getSessionFactory().getCurrentSession().createQuery(hql); query.setFirstResult((pageNo - 1) * pageSize); query.setMaxResults(pageSize); List<Map> list = query.list(); for(Map article : list) { String title = (String)article.get("title"); System.out.println("文章标题是"+title); } 下面再介绍下相关的知识: 1