`
yanghuidang
  • 浏览: 958898 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

上传一个工具包dto传值

阅读更多

好好看了下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层能够满足你的要求

0
0
分享到:
评论

相关推荐

    快速生成DTO

    这样的工具通常会有一个用户友好的界面,允许开发者上传Excel文件,然后生成对应的源代码。 5. **Excel模板设计**: Excel模板应包含DTO的属性名称、数据类型(如String、Integer等)、注释等信息。模板的设计应...

    DTO代码自动生成器

    总的来说,DTO代码自动生成器是一个实用的开发工具,有助于简化数据访问层的编码工作,特别是在处理大量数据库表时。虽然它可能不包括所有可能的集成(如MyBatis的Mapper配置),但可以极大地提高开发速度,让开发者...

    导入Excel快速生成DTO

    "导入Excel快速生成DTO"这个标题暗示了一个工具或库,它能帮助开发者从Excel文件中快速创建对应的Java Bean类,从而提高开发效率。下面我们将深入探讨这一主题。 首先,我们需要理解什么是DTO。DTO是一种无业务逻辑...

    一款自动生成mybatis dto、dao、config的工具

    标题中的“一款自动生成mybatis dto、dao、config的工具”指的是一个自动化代码生成工具,它可以帮助开发者快速生成MyBatis框架所需的Data Transfer Object (DTO)、Data Access Object (DAO)以及配置文件,大大减轻...

    分页dto把html写在dto里

    标题“分页dto把html写在dto里”和描述“把分页按钮写在dto里,其他dto继承他”表明了一个特殊的实践,即将HTML代码直接包含在DTO对象中,以便于处理分页功能,并且其他DTO可能通过继承这个特殊的DTO来共享相同的...

    DTO设计模式.docx

    DTO模式的核心思想是将数据封装在一个独立的对象中,这个对象不包含任何业务逻辑,仅仅用于数据的存储和获取。这样做的好处在于,当数据需要跨层传输时,可以避免直接传递复杂的业务对象,防止了不同层之间的相互...

    Dto,javaBean,带注释自动生成

    在本例中,"beanTools"可能是一个工具包或者脚本,用于生成带有注释的Dto和JavaBean。使用这样的工具,开发者可以快速地构建项目中的数据模型,同时确保代码质量,提高团队协作的效率。在实际应用中,还应注意根据...

    数据库表转实体类和DTO

    - 对于DTO,工具可能会生成一个更简洁的类,仅包含需要在业务层和视图层之间传递的必要字段。 - 最后,生成的Java源代码可以直接导入项目中,进行编译和使用。 5. **注意事项**: - 自动化生成的代码可能需要...

    登陆的dto.zip

    当用户提交登录信息,应用层会调用处理逻辑层的方法,使用DTO对象作为参数,完成登录操作,并可能返回一个包含登录状态和令牌的DTO对象给前端。 在实际开发中,DTO的使用可以有效地解耦客户端和服务器,使得两者...

    eclipse插件,根据数据库表自动生成DTO(pojo)插件

    Eclipse是一款广泛使用的Java集成开发环境(IDE),它支持各种扩展和插件以增强功能。在Java开发中,数据传输对象(DTO)和持久化对象(POJO)是...对于使用MySQL和Oracle数据库的Java项目,这是一个非常实用的工具。

    java 使用 JAXB 将xml转换为 bean 包含xml和dto和读取文件的util类

    在给定的压缩包文件中,可能包含了实现这一功能的相关代码示例,包括XML文件、数据传输对象(DTO,Data Transfer Object)以及一个用于读取文件的工具类。 首先,我们需要了解JAXB的基本工作原理。JAXB提供了一种...

    Any2Dto插件,可以根据数据库和JavaCode生成强类型且精确字段的DTO

    总之,Any2Dto插件是Java开发者的一个实用工具,它提升了代码生成的自动化水平,减少了手动编写DTO类的时间,同时也优化了代码的质量。如果你正在寻找一种方法来改善你的Java项目的代码结构,那么Any2Dto插件无疑是...

    feignclient发送get请求使用dto接收参数demo

    在这个示例中,我们可能有一个DTO类,如`RequestParamDto`,其中包含了GET请求需要的所有参数。将这些参数封装在DTO里可以使代码更整洁,也易于管理。 5. **处理响应** FeignClient接口的方法返回值通常是一个对象...

    简单的EntityFramework4.3+三层+DTO 简单Demo

    简单的EntityFramework4.3+三层+DTO,如果需要简化版的,我的资源里有一个不含DTO的版本。 这个Demo的主要功能是: 1、实体类的创建、复杂类型的嵌套 2、实体类的配置(主键、外键、一对一、1对多,多对多) 3、...

    java_dao_dto生成器

    "java_dao_dto生成器" 是一个工具,它自动化了创建DAO层和DTO(Data Transfer Object)的过程。DTO是用于在系统不同组件之间传递数据的对象,通常用来避免直接暴露底层数据结构。在Java开发中,手动编写这些类可能会...

    apollo-dto-1.7.jar

    标签:apollo-dto-1.7.jar,apollo,dto,1.7,jar包下载,依赖包

    Python库 | lol_dto-0.1a10.tar.gz

    本文将深入探讨一个名为"lol_dto"的Python库,具体版本为0.1a10,其资源以压缩包形式提供——"lol_dto-0.1a10.tar.gz"。这个库的名称可能暗示了它与电子竞技游戏《英雄联盟》(League of Legends,简称LoL)的数据...

    mybatis-generator 生成Dto,Dao,Mapping

    在使用MyBatis Generator时,你需要配置一个generatorConfig.xml文件,这个文件定义了数据库连接信息、要生成代码的目标表以及生成的Java模型类、DAO接口和XML映射文件的命名规则。通过运行MBG,它会读取这个配置...

    java DTO 详解

    采用DTO后,服务端可以将所有相关的商品信息封装到一个DTO对象中,客户端只需调用一次服务端接口即可获取所有需要的信息,极大地提高了效率。例如: ```java ISomeInterface intf = RemoteService.getSomeInterface...

    Dto转实体类 AutoMapper

    AutoMapper是一个强大的.NET库,它简化了对象到对象之间的映射过程。在没有AutoMapper的情况下,开发者需要手动编写大量的复制粘贴代码来完成这种映射,这不仅效率低下,还容易出错。AutoMapper通过配置映射规则,...

Global site tag (gtag.js) - Google Analytics