我相信有很多人像我一样不喜欢用hibernate,或者感觉用的不是很明白,所以我有了这个想法做一个简单OR/Mapping
我先说明 我不是在重复制造轮子,我只是想把事情做得更加简单些,先说说我为什么要作这个MYmapping因为
我们公司是做erp的 用的是jdk1.3 还有ejb 框架特老 开发起来特麻烦 每次写jdbc的get set的时候 都要写很多
也许有的朋友会问 为什么不用hibernate ,因为hibernate支持jdk1.3不太好 而且 里面有很多东西感觉都是多余的,出了异常也不知到从何入手,而且配置还不是很熟悉,而且我们大头坚持他的框架可以做任何事情。。。
所以我萌发了这样的念头这个版本的MYMapping已经是2.0版本的了 要比以前配置更加简单 ,更加灵活,我已经用它做到项目里去了,运行非常稳定,所以想把它发上来 让大家看看,我只是一个技术很一般很一般的程序员,只是我比较有想法,有耐心,希望大家不要说我写的东西很烂。。。因为我知道写的的确很烂,所以才发上来 让大家帮忙看看有什么可以改进的地方,我想把它做得更有扩展性,更有可读性,更有效率。
希望大家积极给我发信息。。。
我的这个MYmpping是配合spring一起做得 所以有些你们需要配置下,我想干过一年的程序员都会很快的跑起来。
说明文文件在 doc目录下。
==============================我也有分割线==============================
先说下结构
config这个包包 是专门用来配置的
core 这个包是mapping的核心
里面的db是反射数据库的,mapping是用来缓存影射关系的
//这个方法就是核心中的核心 作查询反射数据库字段用的,我只写了项目里用的大多数字段,如果还有缺的话自己加上
private void selectObj(Property p,Object obj)throws Exception
{
try
{
//获取方法名称setXxxx()。。。然后获取类型,然后根据类型塞入模型中
String fangfa = "set" + p.getName().substring(0, 1).toUpperCase() + p.getName().substring(1);
String type = p.getType();
Method setMonth = null;
if (type.equals("int"))
{
setMonth = obj.getClass().getMethod(fangfa,new Class[]{Integer.TYPE});
Integer ret = new Integer(rs.getInt(p.getColumn()));
setMonth.invoke(obj, new Integer[]{ret});
}
else if (type.equals("double"))
{
setMonth = obj.getClass().getMethod(fangfa,new Class[]{Double.TYPE});
Double ret = new Double(rs.getDouble(p.getColumn()));
setMonth.invoke(obj, new Double[]{ret});
}
else if (type.equals("float"))
{
setMonth = obj.getClass().getMethod(fangfa,new Class[]{Float.TYPE});
Float ret = new Float(rs.getFloat(p.getColumn()));
setMonth.invoke(obj, new Float[] {ret});
}
else if(type.equals("java.sql.Timestamp"))
{
setMonth = obj.getClass().getMethod(fangfa,new Class[]{Class.forName(type)});
Timestamp ret = rs.getTimestamp(p.getColumn());
Timestamp[] t = {ret};
setMonth.invoke(obj, t);
}
else if(type.equals("java.sql.Date"))
{
setMonth = obj.getClass().getMethod(fangfa,new Class[]{Class.forName(type)});
Date ret = rs.getDate(p.getColumn());
Date[] t = {ret};
setMonth.invoke(obj, t);
}
else if(type.equals("blob"))
{
setMonth = obj.getClass().getMethod(fangfa,new Class[]{String.class});
String ret = getBlob(rs,p.getColumn());
String[] t = {ret};
setMonth.invoke(obj, t);
}
else if(type.equals("java.lang.Object"))
{
String objClass = p.getRelation().getClasses();
setMonth = obj.getClass().getMethod(fangfa,new Class[]{Class.forName(objClass)});
Object ret = this.onetoone(p.getRelation(),p);
Object[] t = {ret};
setMonth.invoke(obj, t);
}
else if(type.equals("java.util.ArrayList"))
{
String related = Util.replace(p.getRelated(),"-","");
Object[] rs = {p.getRelation(),p};
Method setMethod = this.getClass().getMethod(related,new Class[]{Relation.class,Property.class});
Object ret = setMethod.invoke(this, rs);
}
else
{
setMonth = obj.getClass().getMethod(fangfa,new Class[]{Class.forName(type)});
Object ret = rs.getObject(p.getColumn());
Object[] t = {ret};
setMonth.invoke(obj, t);
}
}
catch(Exception e)
{
int f= 4;
log.error("selectObj failed", e);
throw new Exception("数据库反射错�"+e);
}
}
分享到:
相关推荐
标题中的“简单的OR-Mapping工具---不差托作者”指的是一个关于对象关系映射(Object-Relational Mapping,简称ORM)的简易工具,由作者“不差托”开发。ORM是一种编程技术,它允许程序员使用面向对象的方式操作...
SANGFOR NGAF 6.8 DNS-Mapping 配置指导 SANGFOR NGAF 6.8 DNS-Mapping 配置指导是深信服公司发布的一份关于 NGAF 6.8 version 的 DNS-Mapping 配置指南。下面是从该指导中总结的重要知识点: 1. 文档说明:文档...
hibernate-mapping-3.0.dtd 配置后,就会在xml中进行提示
hibernate-mapping-3.0.dtd hibernate-mapping-3.0.dtd hibernate-mapping-3.0.dtd hibernate-mapping-3.0.dtd hibernate-mapping-3.0.dtd hibernate-mapping-3.0.dtd hibernate-mapping-3.0.dtd hibernate-mapping-...
在深入探讨`hibernate-mapping`参数之前,我们先理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。`hibernate-mapping`是Hibernate配置...
因为Hibernate在读出hbm.xml文件时需要通过网络读取到hibernate-mapping-3.0.dtd 文件。 如果没有网络不能正常工作。 所以提供上述文件。 以及hibernate-mapping-3.0.dtd,hibernate-configuration-3.0.dtd提供下载...
### XML中的filter-mapping与dispatcher使用详解 在Java Web开发中,过滤器(Filter)是十分重要的组件之一,主要用于处理客户端请求或响应服务器反馈时的数据处理任务,如编码转换、登录验证、敏感词过滤等。而在...
npm install react-data-mapping API : 数据映射属性 参数 说明 类型 默认值 宽度 组件宽度 数字 默认500,自适应的话可以设置“ auto” 高度 组件高度 数字 默认500,自适应的话可以设置“ auto” 类型 映射类型 ...
这篇博客“超级注意复杂整合环境中的Filter-Mapping的顺序--配置单点登陆及UrlRewrite有感”深入探讨了如何在这样的环境中正确配置Filter和Mapping,以实现单点登录(Single Sign-On, SSO)以及URL重写。下面我们将...
同时,工具箱还提供了丰富的示例代码和教程,帮助初学者快速上手。 总结,MATLAB Mapping Toolbox是MATLAB在地理空间领域的重要扩展,它为科研人员和工程师提供了强大的地图处理和分析能力。在R2019b版本中,正确...
标题 "Indoor-Mapping-Using-the-VLC-Channel-State-Information-master源码" 提供的信息表明,这是一个关于室内定位技术的项目,它利用了Visible Light Communication (VLC)的信道状态信息。VLC是一种利用可见光...
《深入理解Hibernate配置与映射:hibernate-configuration-3.0.dtd与hibernate-mapping-3.0.dtd解析》 在Java世界里,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而`hibernate-...
T1-Mapping 的测量方法有多种,常见的方法有IR序列、Look-Locker序列、MOLLI序列、ShMOLLI序列和SASHA方法。每种方法都有其特点和优缺点。 IR序列是一种经典的T1-Mapping测量方法,但其信号强度恢复曲线较慢,需要...
在Volumetric-3D映射中,我们关注的是“体积”,即对三维空间内部的每一个点进行处理,构建出一个连续的、有密度的体数据。这种技术通常用于创建逼真的烟雾、火焰、云层等动态效果。 CPU实现的实时3D映射面临的主要...
高级映射工具 Dataninja 的一个非常先进的映射工具,基于 、 和更多库对增强。 安装 正常使用 git clone https://github.com/Dataninja/advanced-mapping-tool.git # or download ...