好好看了下dto传值的问题,觉得在从数据库传出到页面的时候使用dto还是不错的,传进去我觉得无所谓。因此写了一个支持从数据库PO中值自动匹配并填
充到dto中的工具类,其实不能算是工具类,因为我直接实现的DAOSupport和ServiceSupport的接口,只要你继承
DAOSupportImpl并且实现DAOSupport(ServiceDAOSupport类似)接口,那么自动转换将不再需要你担心,这个包的限
制是,dto和PO的属性名称相同,并且ORM映射必须使用JPA Annotation,谁有兴趣可以再增加对xml的支持,发一个给我.
这个的好处还是有的,可以减少装配的代码,对于喜欢用DTO的人来说。而且在页面需要再多显示一个属性的时候,你只需要在DTO中添加相应的属性,然后就可以直接在页面代码加入就可以,而不用改Service层的代码。
下面贴出使用代码:
以下的DAO实现用spring管理,你需要提供一个hibernateTemplate,当然它也是不需要你装配的,只需你在spring容器中
含有这个实例。
package test.main;
import com.ccuywsnjgh.support.dao.DAOSupport;
import com.ccuywsnjgh.support.dao.DAOSupportImpl;
import com.ccuywsnjgh.support.model.Employee;
public class EmployeeDAO extends DAOSupportImpl<Employee> implements
DAOSupport<Employee> {
}
package test.main;
import com.ccuywsnjgh.support.dao.DAOSupport;
import com.ccuywsnjgh.support.dao.DAOSupportImpl;
import com.ccuywsnjgh.support.model.IdCard;
public class IdCardDAO extends DAOSupportImpl<IdCard> implements
DAOSupport<IdCard> {
}
测试代码:
package test.main;
import com.ccuywsnjgh.support.dao.DAOSupport;
import com.ccuywsnjgh.support.dao.DAOSupportImpl;
import com.ccuywsnjgh.support.model.Role;
public class RoleDAO extends DAOSupportImpl<Role> implements DAOSupport<Role> {
}
new IdCardDAO();
new EmployeeDAO();
new RoleDAO();
this.printEndTime();
Role role = null;
Set<Role> roles = new HashSet<Role>();
for(int i = 0;i < 1000;i++) {
role = new Role();
role.setId(i);
role.setName("name" + i);
roles.add(role);
}
Employee em = new Employee();
IdCard id = new IdCard();
id.setAddress("北京");
id.setCardNo("433124");
em.setIdCard(id);
em.setCanUse(true);
em.setCreateTime(new Date());
em.setE_mail("email");
em.setGender(Gender.FEMALE);
em.setPassword("password");
em.setRealName("龙安");
em.setUserName("longan");
em.setRoles(roles);
List<Employee> ems = new ArrayList<Employee>();
for (int i = 0; i < 100; ++i)
ems.add(em);
LogUtils.openLog();
this.printStartTime();
EmployeeDTO dto = ServiceSupportImpl.ServiceSupportUtils.divert(EmployeeDTO.class, ems, null).get(4);
this.printEndTime();
System.out.println("userName : " + dto.getUserName()
+ "\npassword : " + dto.getPassword()
+ "\nrealName : " + dto.getRealName()
+ "\nemail : " + dto.getE_mail()
+ "\ncanUse : " + dto.getCanUse()
+ "\ngender : " + dto.getGender()
+ "\ncreateTime : " + dto.getCreateTime()
+ "\naddress : " + dto.getAddress()
+ "\ncardNo : " + dto.getCardNo()
+ "\nroles.size() : " + dto.getRoles().size());
RoleDTO[] infos = new RoleDTO[1000];
dto.getRoles().toArray(infos);
RoleDTO info = infos[(int) (Math.random() * 1000)];
System.out.println("id : " + info.getId()
+ "\nname : " + info.getName());
输出:
end : 203 - 1301032937140 实例化耗时
start : 0 - 1301032937140 开始记录执行所需时间
end : 219 - 1301032937359
执行100个Employee到EmployeeDTO的转换所耗时间,这其中包含每个Employee到EmployeeDTO中均有一个
List<RoleDTO>,长度为1000。假如不包含List,Set(现在不支持Map)的话,10000个转换需要120左右ms,
在我机子上测试,我的机子是Dell 1400 T7250 2GHZ 2G内存
userName : longan //Employee下的属性
password : password //Employee下的属性
realName : 龙安 //Employee下的属性
email : email //Employee下的属性
canUse : true //Employee下的属性
gender : FEMALE //Employee下的属性
createTime : Fri Mar 25 14:02:17 CST 2011 //Employee下的属性
address : 北京 //Idcard下的属性,Employee中含有IdCard。
cardNo : 433124 //Idcard下的属性,Employee中含有IdCard。
roles.size() : 1000 //List<RoleDTO>
id : 961 //List<RoleDTO>中的随机的一个RoleDTO下的属性
name : name961 //同上
实现的这个东西对于DAO层有依赖,因此,假使不使用默认的DAO实现的话,将会出问题。
其实从另一方面讲:我实现的DAO和Service层的基本功能足以使用,当然,像一些复杂的东西,你得自己实现,Service层的功能足以让你做大部
分事情,但是Service层返回的都是dto,因此,假如Service层有些地方你可能要用到从数据库返回的PO,那么,DAO层能够满足你的要求
分享到:
相关推荐
这样的工具通常会有一个用户友好的界面,允许开发者上传Excel文件,然后生成对应的源代码。 5. **Excel模板设计**: Excel模板应包含DTO的属性名称、数据类型(如String、Integer等)、注释等信息。模板的设计应...
总的来说,DTO代码自动生成器是一个实用的开发工具,有助于简化数据访问层的编码工作,特别是在处理大量数据库表时。虽然它可能不包括所有可能的集成(如MyBatis的Mapper配置),但可以极大地提高开发速度,让开发者...
"导入Excel快速生成DTO"这个标题暗示了一个工具或库,它能帮助开发者从Excel文件中快速创建对应的Java Bean类,从而提高开发效率。下面我们将深入探讨这一主题。 首先,我们需要理解什么是DTO。DTO是一种无业务逻辑...
标题中的“一款自动生成mybatis dto、dao、config的工具”指的是一个自动化代码生成工具,它可以帮助开发者快速生成MyBatis框架所需的Data Transfer Object (DTO)、Data Access Object (DAO)以及配置文件,大大减轻...
标题“分页dto把html写在dto里”和描述“把分页按钮写在dto里,其他dto继承他”表明了一个特殊的实践,即将HTML代码直接包含在DTO对象中,以便于处理分页功能,并且其他DTO可能通过继承这个特殊的DTO来共享相同的...
DTO模式的核心思想是将数据封装在一个独立的对象中,这个对象不包含任何业务逻辑,仅仅用于数据的存储和获取。这样做的好处在于,当数据需要跨层传输时,可以避免直接传递复杂的业务对象,防止了不同层之间的相互...
在本例中,"beanTools"可能是一个工具包或者脚本,用于生成带有注释的Dto和JavaBean。使用这样的工具,开发者可以快速地构建项目中的数据模型,同时确保代码质量,提高团队协作的效率。在实际应用中,还应注意根据...
- 对于DTO,工具可能会生成一个更简洁的类,仅包含需要在业务层和视图层之间传递的必要字段。 - 最后,生成的Java源代码可以直接导入项目中,进行编译和使用。 5. **注意事项**: - 自动化生成的代码可能需要...
当用户提交登录信息,应用层会调用处理逻辑层的方法,使用DTO对象作为参数,完成登录操作,并可能返回一个包含登录状态和令牌的DTO对象给前端。 在实际开发中,DTO的使用可以有效地解耦客户端和服务器,使得两者...
Eclipse是一款广泛使用的Java集成开发环境(IDE),它支持各种扩展和插件以增强功能。在Java开发中,数据传输对象(DTO)和持久化对象(POJO)是...对于使用MySQL和Oracle数据库的Java项目,这是一个非常实用的工具。
在给定的压缩包文件中,可能包含了实现这一功能的相关代码示例,包括XML文件、数据传输对象(DTO,Data Transfer Object)以及一个用于读取文件的工具类。 首先,我们需要了解JAXB的基本工作原理。JAXB提供了一种...
总之,Any2Dto插件是Java开发者的一个实用工具,它提升了代码生成的自动化水平,减少了手动编写DTO类的时间,同时也优化了代码的质量。如果你正在寻找一种方法来改善你的Java项目的代码结构,那么Any2Dto插件无疑是...
在这个示例中,我们可能有一个DTO类,如`RequestParamDto`,其中包含了GET请求需要的所有参数。将这些参数封装在DTO里可以使代码更整洁,也易于管理。 5. **处理响应** FeignClient接口的方法返回值通常是一个对象...
简单的EntityFramework4.3+三层+DTO,如果需要简化版的,我的资源里有一个不含DTO的版本。 这个Demo的主要功能是: 1、实体类的创建、复杂类型的嵌套 2、实体类的配置(主键、外键、一对一、1对多,多对多) 3、...
"java_dao_dto生成器" 是一个工具,它自动化了创建DAO层和DTO(Data Transfer Object)的过程。DTO是用于在系统不同组件之间传递数据的对象,通常用来避免直接暴露底层数据结构。在Java开发中,手动编写这些类可能会...
标签:apollo-dto-1.7.jar,apollo,dto,1.7,jar包下载,依赖包
本文将深入探讨一个名为"lol_dto"的Python库,具体版本为0.1a10,其资源以压缩包形式提供——"lol_dto-0.1a10.tar.gz"。这个库的名称可能暗示了它与电子竞技游戏《英雄联盟》(League of Legends,简称LoL)的数据...
在使用MyBatis Generator时,你需要配置一个generatorConfig.xml文件,这个文件定义了数据库连接信息、要生成代码的目标表以及生成的Java模型类、DAO接口和XML映射文件的命名规则。通过运行MBG,它会读取这个配置...
采用DTO后,服务端可以将所有相关的商品信息封装到一个DTO对象中,客户端只需调用一次服务端接口即可获取所有需要的信息,极大地提高了效率。例如: ```java ISomeInterface intf = RemoteService.getSomeInterface...
AutoMapper是一个强大的.NET库,它简化了对象到对象之间的映射过程。在没有AutoMapper的情况下,开发者需要手动编写大量的复制粘贴代码来完成这种映射,这不仅效率低下,还容易出错。AutoMapper通过配置映射规则,...