OR-Mapping 设计改进(统计查询改进) | 学习笔记

简介: 简介:快速学习 OR-Mapping 设计改进(统计查询改进)

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

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


OR-Mapping 设计改进(统计查询改进)

 

内容介绍:

一、简要说明

二、具体内容

三、总结


一、简要说明

统计查询的操作较为固化。而且统计查询个数往往只返回一个结果。因为转换的操作形式使用不多,所以建议直接将其在 AbstractDAO 里面进行部分实现。


二、具体内容

1、在 AbstractDAO 里面追加有一个 getSupport()方法:

public <T> getSupport(String sql,Class<T> cls,Object …args) {

this.pstmt = this.conn.preparedStatement(sql) ;

if (args.length > 0) {

}

2、在 ResultSetToVO 类里面追加有一个转换的控制方法。

转换的一定是单个值,所以找到public static <T>

converteStat(PreparedStatement pstmt,Class<T> cls) {,

首先进行判断为if (” Integer”.equals(type) || ”

int”.equals(type)){,结果转为整型,则再跟上Result rs = pstmt.executeQuery();,进行return new Integer(rs.getInt(1));。此时位型不好操作,而 Resultset 可以直接用 String 接收,则先写入 String val = null;,

跟上 if(rs.next()) {

再跟上 val = rs.getString(1) ;,

但如果根据T来操作结果是不承认的,所以将<T> 改为 Object,将 Class<T> cls 删除掉,也不用判断位型,直接返回 return rs.getString(1);,否则 return“0”,

如下:

public static Object converteStat(PreparedStatement pstmt) throws Exception {

Result rs = pstmt.executeQuery();

if(rs.next()){

return rs.getString(1);

}

return“0”

}

3、在 AbstractDAO 里要进行转换处理

直接 return ResultSetToVOUtil.converteStat(this.pstmt) ,将 Object 强制变为 T ,直接跟上

return super.getSupport(sql,Long.class,args) ;,如果返回的是 String,则跟上

Object val = ResultSetToVOUtil.converteStat(this.pstmt);,且val = Long. parseLong(val.toString());,则return val

再跟上}else if (“int”.equals(cls.getSimpleName()) ||

“Integer”.”int”.equals(cls.getSimpleName());,再跟上val =Integer. parseInt(val.toString());,最终结果只需要将val强制变为T,即return T) val;就可以完成操作了。此时的结果也可以正常通过,

如下:

public <T> getSupport(String sql,Class<T> cls,Object …args) {

this.pstmt = this.conn.preparedStatement(sql) ;

if (args.length > 0) {

}

Object val = ResultSetToVOUtil.converteStat(this.pstmt)

if ”Long“.equalsIgnoreCase(cls.getSimpleName())) ;

val = Long. parseLong(val.toString()) ;

}else if (“int”.equals(cls.getSimpleName()) || “Integer”.”int”.equals(cls.getSimpleName()) ;

val =Integer. parseInt(val.toString())

}

return (T)val  

}

可以适用于所有的单表数据操作。


三、总结

程序调用处理和之间查询全部数据类似。所有的功能只是最基本的实现,如果要想将其应用在生产环境,还需要编写更多的代码,对整个的结构进行更加详细的改变。

相关文章
|
弹性计算 Linux 开发工具
阿里云学生云服务器申请_学生云主机优惠/大全2023
阿里云学生云服务器申请_学生云主机优惠/大全2023,申请阿里云学生服务器通过学生验证,免费领取7个月学生服务器
429 1
|
存储
Transformers 4.37 中文文档(十五)(2)
Transformers 4.37 中文文档(十五)
148 1
|
10月前
|
存储 数据挖掘 索引
Pandas Series 和 DataFrame 常用属性详解及实例
Pandas 是 Python 数据分析的重要工具,其核心数据结构 Series 和 DataFrame 广泛应用。本文详细介绍了这两种结构的常用属性,如 `index`、`values`、`dtype` 等,并通过具体示例帮助读者更好地理解和使用这些属性,提升数据分析效率。
404 4
|
设计模式 XML 存储
【七】设计模式~~~结构型模式~~~桥接模式(Java)
文章详细介绍了桥接模式(Bridge Pattern),这是一种对象结构型模式,用于将抽象部分与实现部分分离,使它们可以独立地变化。通过实际的软件开发案例,如跨平台视频播放器的设计,文章阐述了桥接模式的动机、定义、结构、优点、缺点以及适用场景,并提供了完整的代码实现和测试结果。桥接模式适用于存在两个独立变化维度的系统,可以提高系统的可扩展性和灵活性。
【七】设计模式~~~结构型模式~~~桥接模式(Java)
|
监控 安全 数据安全/隐私保护
什么是OTA升级模式?
【7月更文挑战第20天】什么是OTA升级模式?
1646 8
|
Shell PHP Windows
来自红队大佬的经验之谈---命令执行过滤绕过-Windows篇
感谢来自老流氓大佬的投稿,本次文章介绍的是在windows环境下,过滤的“点”和“空格”等符号,如何利用windowsit特性进行绕过
|
移动开发 JavaScript 前端开发
React-Native iOS打包
React-Native iOS打包
145 0
|
SQL 关系型数据库 MySQL
centos编译安装mariadb
一般我不太愿意用mysql,那个玩意,有的时候不太友好。 我还是比较喜欢mariadb。
506 0
|
SQL Oracle 关系型数据库
docker 方式安装ORACLE 11g
docker 方式安装ORACLE 11g
1027 5
|
SQL 关系型数据库 MySQL
阿里 Seata 新版本终于解决了 TCC 模式的幂等、悬挂和空回滚问题
阿里 Seata 新版本终于解决了 TCC 模式的幂等、悬挂和空回滚问题
526 0
阿里 Seata 新版本终于解决了 TCC 模式的幂等、悬挂和空回滚问题