您的位置:首页 > 其它

[构建自己的持久层]三、Type数据类型描述

2010-08-27 10:27 295 查看
  一切反动派都是纸老虎!

  数据类型,用来描述对象属性的java数据类型与数据库数据库类型的关系。也就是说,创建一个类,类的其中一个属性是email,在java中是什么类型,在数据库中是什么类型...

以MySql数据库为例

/catframework/xtools/data/MySql.xml

<?xml version="1.0" encoding="UTF-8"?>
<types>
<type name="text" label="小文本" javatype="java.lang.String" datatype="varchar(${Length})" browserurl="" view="input" hibernatetype="string"><input type="text" max="${max}" value=${value} /></type>
<type name="textarea" label="大文本" javatype="java.lang.String" datatype="text" browserurl="" view="textarea" hibernatetype="string"><textarea></textarea></type>
<type name="integer" label="整数" javatype="java.lang.Integer" datatype="integer" browserurl="" view="inputnumber" hibernatetype="integer"></type>
<type name="long" label="长整数" javatype="java.lang.Long" datatype="BIGINT" browserurl="" view="inputnumber" hibernatetype="integer"></type>
<type name="float" label="浮点数" javatype="java.math.BigDecimal" datatype="decimal(18,${Length})" browserurl="" view="inputfloat" hibernatetype="decimal"></type>
<type name="datetime" label="日期时间" javatype="java.util.Date" datatype="datetime" browserurl="/com/cat/xframework/browser/datetime.jsp?value=${value}" view="browserdatetime" hibernatetype="timestamp"></type>
<type name="date" label="日期" javatype="java.lang.String" datatype="char(10)" browserurl="/com/cat/xframework/browser/date.jsp?value=${value}" view="browserdate" hibernatetype="string"></type>
<type name="time" label="时间" javatype="java.lang.String" datatype="char(8)" browserurl="/com/cat/xframework/browser/time.jsp?value=${value}" view="browsertime" hibernatetype="string"></type>
<type name="spojo" label="选择单实体" javatype="java.lang.String" datatype="varchar(${Length})" browserurl="/com/cat/xframework/browser/pojo.jsp?value=${value}" view="selectpojo" hibernatetype="integer"></type>
<type name="image" label="单图片" javatype="java.lang.String" datatype="varchar(${Length})" browserurl="/com/cat/xframework/browser/pojo.jsp?value=${value}" view="selectpojo" hibernatetype="integer"></type>
<type name="pojo" label="单实体" javatype="java.lang.String" datatype="varchar(${Length})" browserurl="/com/cat/xframework/browser/pojo.jsp?value=${value}" view="browserpojo" hibernatetype="integer"></type>
<type name="xpojo" label="多实体" javatype="java.lang.String" datatype="text" browserurl="/com/cat/xframework/browser/xpojo.jsp?value=${value}" view="xbrowserpojo" hibernatetype="string"></type>
<type name="mobile" label="手机号" javatype="java.lang.String" datatype="varchar(${Length})" browserurl="" view="input" hibernatetype="string"></type>
<type name="phone" label="电话" javatype="java.lang.String" datatype="varchar(${Length})" browserurl="" view="input" hibernatetype="string"></type>
<type name="email" label="邮件" javatype="java.lang.String" datatype="varchar(${Length})" browserurl="" view="inputemail" hibernatetype="string"></type>
<type name="url" label="网址" javatype="java.lang.String" datatype="varchar(${Length})" browserurl="" view="inputemail" hibernatetype="string"></type>
<type name="selectstring" label="选择文本" javatype="java.lang.String" datatype="varchar(${Length})" browserurl="" view="selecstring" hibernatetype="string"></type>
<type name="selectinteger" label="选择整数" javatype="java.lang.Integer" datatype="integer" browserurl="" view="selectnumber" hibernatetype="integer"></type>
<type name="selectfloat" label="选择浮点数" javatype="java.math.BigDecimal" datatype="decimal" browserurl="" view="selectfloat" hibernatetype="decimal"></type>
<type name="browser" label="单选浏览" javatype="java.lang.Integer" datatype="integer" browserurl="" view="browser" hibernatetype="integer"></type>
<type name="multibrowser" label="多选浏览" javatype="java.lang.String" datatype="text" browserurl="" view="browser" hibernatetype="string"></type>
<type name="browser" label="单选浏览" javatype="java.lang.Integer" datatype="integer" browserurl="" view="browser" hibernatetype="integer"></type>
<type name="multibrowser" label="多选浏览" javatype="java.lang.String" datatype="text" browserurl="" view="browser" hibernatetype="string"></type>
<type name="identity" label="自增ID" javatype="java.lang.Long" datatype="BIGINT NOT NULL AUTO_INCREMENT" browserurl="" view="inputnumber" hibernatetype="integer"><input type="text" max="${max}" value=${value} /></type>
<createtable label="创建表SQL模板">
CREATE TABLE ${tablename} (
${id} ${columtype} NOT NULL ,
${label} varchar(500),
PRIMARY KEY(${id})
)
TYPE = InnoDB DEFAULT CHARSET=utf8;
</createtable>
<createtablebyextends label="创建表SQL模板">
CREATE TABLE ${tablename} (
${id} ${columtype} NOT NULL ,
PRIMARY KEY(${id}),
CONSTRAINT FK_${tablename}_${extends} FOREIGN KEY FK_${tablename}_${extends} (${id})
REFERENCES ${extends}(${id})
ON DELETE RESTRICT
ON UPDATE RESTRICT
)
TYPE = InnoDB DEFAULT CHARSET=utf8;
</createtablebyextends>
<addcolum label="加入列SQL模板">ALTER TABLE ${tablename} add ${columname} ${columtype}</addcolum>
<modifycolum label="修改列SQL模板">ALTER TABLE ${tablename} MODIFY COLUMN ${columname} ${columtype}</modifycolum>
<dropcolum label="删除列SQL模板">ALTER TABLE ${tablename} DROP COLUMN ${columname}</dropcolum>
<droptable label="删除表SQL模板">DROP TABLE ${tablename}</droptable>
<dialect>com.cat.xtools.data.MySqlDialect</dialect>
<connectionmanager>com.cat.xtools.conn.CatConnectionManager</connectionmanager>
<!--
Oracle org.hibernate.dialect.OracleDialect
MySQL org.hibernate.dialect.MySQLDialect
MsSQL com.cat.xtools.data.MsSqlDialect
其它数据库未测
-->
</types>

简单介绍一下:types->type:小文本,在java中的类型是String,在hibernate中的类型是string,在数据库中的类型是varchar,在html页面上就是input.啊!为什么还要描述html信息?后面会讲到:)

对,就这样描述。

我们再来看一下,为了方便我们动态的创建数据库表,数据实现映射,动态的修改数据库的表,我们定义了不同的创建方法,这里不再详述

dialect是SQL查询解析,我无耻了一下,这里照搬了hibernate,但是MsSql没有照搬,因为MsSql有特殊的地方,作为商业机密,在这里不讲了。

我们再来看一下com.cat.xtools.Type.java

package com.cat.xtools;

/**
* 数据类型<br>
* <p>
* 修改日期:2006-1-25
* <p>
* 修改说明:
* <p>
* 版权所有:Copyright 2006 软件有限公司, Inc. All rights reserved.
*
* @version 1.0
* @author 侯正刚
* @since 1.0
*/
public class Type extends SysEntity{
private String javatype=null;
private String datatype=null;
private String browserurl=null;
private String hibernatetype=null;
private String view=null;
public Type() {
super();

}
/**
* 设置JAVA类型
* @param javatype
*/
public void setJavatype(String javatype) {

this.javatype=javatype;
}
/**
* 返回JAVA类型
* @return
*/
public String getJavatype() {

return this.javatype;
}
/**
* 设置数据库类型
* @param type
*/
public void setDatatype(String type) {

this.datatype=type;
}
/**
* 返回数据库类型
* @return
*/
public String getDatatype() {

return this.datatype;
}
/**
* 返回数据库类型描述串
* @return
*/
public String getTypestr(Integer length)
{
return this.datatype.replaceAll("$Length",length+"");
}
/**
* 返回浏览地址
* @return
*/
public String getBrowserurl()
{
return this.browserurl;
}
/**
* 设置数据浏览地址
* @param url
*/
public void setBrowserurl(String url)
{
this.browserurl=url;
}
/**
* 设置hibernate中的类型
* @param type
*/
public void setHibernatetype(String type)
{
this.hibernatetype=type;
}
/**
* 返回hibernate中的类型
* @return
*/
public String getHibernatetype()
{
return this.hibernatetype;
}
/**
* 设置HTML代码
* @param view
*/
public void setView(String view)
{
this.view=view;
}
/**
* 返回HTML代码
* @return
*/
public String getView()
{
return this.view;
}
/**
* @param args
*/
public static void main(String[] args) {

}

}

通过java可以看得很清楚了吧,对数据类型的描述。

明白了吧?不明白?再看一遍!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: