OR-Mapping 设计改进(数据删除改进) | 学习笔记

简介: 简介:快速学习 OR-Mapping 设计改进(数据删除改进)

开发者学堂课程【DAO 开发实战业务分析:OR-Mapping 设计改进(数据删除改进】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/399/detail/5180


OR-Mapping 设计改进(数据删除改进)


内容介绍:

一、简要说明

二、具体内容


一、简要说明

对于现在给出的数据的批量删除处理实际上相对于之前的增加和修改操作要容易许多,因为在整个删除的处理里面就是根据一个指定的 ID,而后使用一个IN操作符进行操作处理而已。

对于删除操作来说,主键跟上的类型有两种。不同的表只要知道表名称与主键名称就可以进行删除。


二、具体内容

1、对于子类(MemberDAOImpl 子类),只需要在方法内部调用一个处理操作即可,如下:

@Override

public boolean doRemoveBatch(Set<String> ids) throws Exception {

return super.removeSupport(ids,Member.class) ;

}

2、随后的重点就需要放在 AbstractDAO 父类里面,如下:

public <T> boolean removeSupport(Set<?> ids,Class<T> cls)

{  

System.out.println(ids.toArray()[0].getClass().getName())

return false ;

}

设置问号,只需要修改,不需要取出,但是是Set集合,Set集合与List集合的最大区别是支不支持取数据,所以取出第0个测试能输出的内容。执行后结果为String类型。

3、定义一个 RemoveSupport 的处理类,这个类需要进行创建 SQL 语句的操作控制,最好通过 PreparedStatement 的动态设计完成。

在进行操作前要传入取出 idType。返回后拼凑语句,DELETE FROM 表名称,WHER 跟上主键列再跟上(),括号里面分为两种值,分别为字符串或数字。

如下:

public <T> boolean removeSupport(Set<?> ids,Class<T> cls){  

RemoveSupport support = new RemoveSupport() ;

String idType = ids.toArray()[0].getClass().getSimpleName()

System.out.println(support.createSQL(type,ids,cls));

return false ;  //可知道id类型

}

然后找到 RemoveSupport,如下:

package cn.mldn.util.dao.support;

import java.util.Set;

public class RemoveSupport  {  //加入泛型保持一致,但过于麻烦,所以保持原型

private Map<Integer,Object> valueMap = new HashMap<Integer, Object>() ;

/**

* 为删除语句之中的PreparedStatement对象设置内容

* @param pstmt

* @param type

*/ 

public void setPreparedStatement(PreparedStatement pstmt,String type) throws Exception {

for(int x = 1;x <= this,valueMap.size() ; x ++) {

if (String“.equals(type)) {           

pstmt.setString(x,this.valueMap.get(x).toString());

} else if (“Integer“.equals(type)) {     pstmt.setInt(x,Intger.parseInt(this.valueMap.get(x).toString()));

}

}

}

/**

* 创建要删除的SQL语句

* @param type ID的数据类型

* @param ids 所有的ID数据

* @param cls VO类型

* @return

*/

public <T> String createSQL(Set<?> ids,Class<T> cls) {  //要接收操作id的所有值,因为需要id设置内容。

StringBuffer buf = new StringBuffer() ;

String tableName = cls.getSimpleName() ;

String idColumn = Resource.getId(cls.getName()) ;

buf.append(“DELETE FROM”).append(tableName).append(“WHERE”).append(idColumn).append(“(“) ;

Iterator<?> iter = ids. iterator() ;

int foot = 1 ;

while (iter.hasNext()) {

buf.append(“?,”) ;

this.valueMap.put(foot ++,iter.next()) ;

}

buf.delete(buf.length() - 1, buf.length()) ;

buf. append(“(“) ;

return buf.toString() ;

}

}

创建 PreparedStatement 时需要用到 Type 。进行执行后仍要进行创建来完善程序,

如下:

public <T> boolean removeSupport(Set<?> ids,Class<T> cls)

{  

RemoveSupport support = new RemoveSupport() ;

String idtype = ids toArray()[0].getClass().getSimpleName()

this.pstmt= this.conn.preparedStatement(support.createSQL(ids,cls)) ;

support.setPreparedStatement(this.pstmt.idType);

return this.pstmt,executeUpdate() == ids.size();

}

回到之前的测试业务位上,执行后操作成功。

对于实际开发之中删除的处理操作流程几乎是固定的。

4、调用操作:

public <T> String createSQL(Set<?> ids,Class<T> cls) {  

StringBuffer buf = new StringBuffer() ;

String tableName = cls.getSimpleName() ;

String idColumn = Resource.getId(cls.getName()) ;

buf.append(“DELETE FROM”).append(tableName).append(“WHERE”).append(idColumn).append(“(“) ;

Iterator<?> iter = ids. iterator() ;

int foot = 1 ;

while (iter.hasNext()) {

buf.append(“?,”) ;

this.valueMap.put(foot ++,iter.next()) ;

}

buf.delete(buf.length() - 1, buf.length()) ;

buf. append(“(“) ;

return buf.toString() ;

}

}

唯一要处理的部分只有主键类型:

Integer、String。

相关文章
|
存储 数据采集 架构师
谈谈数据项目中的Data mapping(数据映射)
企业数据正变得越来越分散和庞大。与此同时,对企业来说,利用数据并将其转化为可操作的见解,变得比以往任何时候都更加重要。
谈谈数据项目中的Data mapping(数据映射)
你有没有使用过这些编程骚操作(二)- 验证框架(Part B)
你有没有使用过这些编程骚操作(二)- 验证框架(Part B)
你有没有使用过这些编程骚操作(二)- 验证框架(Part B)
|
前端开发 Java 数据库连接
你有没有使用过这些编程骚操作(二)- 验证框架(Part A)
你有没有使用过这些编程骚操作(二)- 验证框架(Part A)
你有没有使用过这些编程骚操作(二)- 验证框架(Part A)
|
前端开发 Java Spring
你有没有使用过这些编程骚操作(二)- 验证框架(Part C)
你有没有使用过这些编程骚操作(二)- 验证框架(Part C)
你有没有使用过这些编程骚操作(二)- 验证框架(Part C)
|
SQL 开发者
OR-Mapping 设计改进(数据修改改进) | 学习笔记
简介:快速学习 OR-Mapping 设计改进(数据修改改进)
104 0
|
SQL 开发框架 数据处理
OR-Mapping 设计改进(数据增加改进) | 学习笔记
简介:快速学习 OR-Mapping 设计改进(数据增加改进)
107 0
|
SQL 移动开发 开发者
OR-Mapping 设计改进(查询全部改进) | 学习笔记
简介:快速学习 OR-Mapping 设计改进(查询全部改进)
|
SQL Oracle Java
OR-Mapping 设计改进(结果集元数据) | 学习笔记
简介:快速学习 OR-Mapping 设计改进(结果集元数据)
|
Java 开发者
OR-Mapping 设计改进(主键配置) | 学习笔记
简介:快速学习 OR-Mapping 设计改进(主键配置)
|
开发者
OR-Mapping 设计改进(数据层结构调整) | 学习笔记
简介:快速学习 OR-Mapping 设计改进(数据层结构调整)