(crm笔记1-7)搭建好框架后对dao层进行功能扩充
来源:互联网 发布:java 按键监听 编辑:程序博客网 时间:2024/06/05 17:44
搭建好框架后对dao层进行功能扩充
在搭建好框架后,因为搭建框架时候只使用了一个方法进行测试,现在已经测试框架是成功的,所以需要重新编写其他的增删改查等方法。
之前写的方法只是保存也就是增加。现在把查询和修改等等补全。
直接在testSysUserGroupDao.java中增加测试方法,逆着进行方法的补全。
1.添加update方法
@Test public void testUpdate() { ISysUserGroupDao sysUserGroupDao = (ISysUserGroupDao) ctx.getBean(ISysUserGroupDao.SERVICE_NAME);//插入数据 SysUserGroup sysUserGroup = new SysUserGroup(); sysUserGroup.setId(5); sysUserGroup.setIncumbent("更新销售部"); sysUserGroup.setName("李四"); sysUserGroup.setPrincipal("张三"); sysUserGroup.setRemark("no remark"); sysUserGroupDao.update(sysUserGroup); }
这里会报错,因为在sysUserGroupDao.update(sysUserGroup);中没有update这个方法,所以进入到ICommonDao层,添加update接口,
void update(T entity);
增加后,在CommonDaoImpl实现类中增加update的实现方法:
@Override public void update(T entity) { super.getHibernateTemplate().update(entity); }
运行测试成功!
2.添加find方法
添加查询方法有点复杂,因为查询一般是通过id查询,而数据库中的id一般有很多中存储方式,integer,String ,long等等类型,下面解决这个问题:
利用Serializable,这个类型兼容很多中数据类型
同样先写测试类,逆向进行方法的补全:
@Test public void testFindSysUserGroupById() { ISysUserGroupDao sysUserGroupDao = (ISysUserGroupDao) ctx.getBean(ISysUserGroupDao.SERVICE_NAME);//插入数据 Serializable id=1;//使用这个类型可以涵盖多种数据类型进行查询 SysUserGroup sysUserGroup= sysUserGroupDao.findObjectById(id); System.out.println(sysUserGroup.toString()); }
这里需要补全的方法有:
findObjectById(id)
所以在ICommonDao中添加:
T findObjectById(Serializable id);
实现类中添加:
@Override public T findObjectById(Serializable id) { if(id==null){ throw new RuntimeException("您要查找的id不能为空"); } return (T)this.getHibernateTemplate().get(entityClass,id); }
这里需要输入一个entityClass,而这个类需要进行反射获取父类的类型,获取方式为:
ParameterizedType type= (ParameterizedType) classzz.getGenericSuperclass(); Class entityClass = (Class) type.getActualTypeArguments()[0];
所以编写一个工具类,在com.huiyu.crm.util包中添加:GenericClass
目的用来获取父类的泛型类型
public static Class getGenericClass(Class classzz) { ParameterizedType type= (ParameterizedType) classzz.getGenericSuperclass(); Class entityClass = (Class) type.getActualTypeArguments()[0]; return entityClass; }
然后在CommonDaoImpl.java实现类中调用这个方法即可;
定义一个私有对象:
private Class entityClass = GenericClass.getGenericClass(this.getClass());
把这个entity传给findObjectById方法即可。 这样就可以在测试类中查询需要的id数据,如果查询需要在控制台显示出查询的数据
需要在javabean中对应的bean类添加toString方法。
@Override public String toString() { return "SysUserGroup [id=" + id + ", remark=" + remark + ", name=" + name + ", principal=" + principal + ", incumbent=" + incumbent + "]"; }
其他删除功能也是类似,把相同的id作为serializable类型进行删除,仿照查询方法写就行了。
- (crm笔记1-7)搭建好框架后对dao层进行功能扩充
- (crm笔记1-2) Dao层的搭建
- 使用JUnit4对SSH2框架Service/Dao层进行单元测试
- (crm笔记1-3)Service层搭建
- (crm笔记1-4)Struts2层搭建
- spring使用AOP技术对DAO层操作进行增强功能
- 用Spring提供的JUnit框架扩展对DAO或Service层进行单元测试
- 用Spring提供的JUnit框架扩展对DAO或Service层进行单元测试
- 用Spring提供的JUnit框架扩展对DAO或Service层进行单元测试
- (crm笔记1-1) 框架的搭建
- ssm框架搭建(一)-Dao层搭建-mybatis
- Junit结合Spring对Dao层进行单元测试
- Junit结合Spring对Dao层进行单元测试
- SSH框架中Model层, Action层, Service层, Dao层的功能理解
- 通过Hibernate框架搭建简单的dao层
- 框架学习(1)——service层,dao层和service实现类进行数据库操作
- dao层框架
- crm之搭建框架
- 浅谈ViewPager+Fragment的使用和理解
- 学习C语言|CSDN的第0天 + 我是如何走上编程之路的
- jsp通过include指令引入html乱码的解决方法
- 【深入PHP 面向对象】读书笔记(十一)
- 【肠道生态】-CS0001-《消失的微生物》
- (crm笔记1-7)搭建好框架后对dao层进行功能扩充
- Oracle客户端的sqlplus登录Windows Oracle数据库服务器端缓慢
- python 类的继承
- Android Camera增加自定义图像处理并录制MP4
- Elon Musk(埃隆马斯克)的从零到一思维术
- Windows Practice_作业 Easy QQ的实现
- LVS-DR高可用集群【自动化健康检测脚本】
- UVA 10142 Australian Voting
- 【肠道生态】-CS0002-《Human Microbiome Project-HMP微生物计划操作手册》