`

bboss持久层demo使用说明

阅读更多
持久层案例可以用svn客户端下载eclipse工程,导入eclise即可
https://github.com/bbossgroups/bbossgroups-3.5/tree/master/bestpractice/persistent

环境准备,建好数据库,然后再数据库上执行以下脚本(不同的数据库需要做些微调):
drop table TABLEINFO cascade constraints;

CREATE TABLE TABLEINFO
(
  TABLE_NAME          VARCHAR2(255)        NOT NULL,
  TABLE_ID_NAME       VARCHAR2(255),
  TABLE_ID_INCREMENT  NUMBER(5)                 DEFAULT 1,
  TABLE_ID_VALUE      NUMBER(20)                DEFAULT 0,
  TABLE_ID_GENERATOR  VARCHAR2(255),
  TABLE_ID_TYPE       VARCHAR2(255),
  TABLE_ID_PREFIX     VARCHAR2(255)
);

COMMENT ON TABLE TABLEINFO IS '表信息维护对象';

COMMENT ON COLUMN TABLEINFO.TABLE_NAME IS '表名称';


COMMENT ON COLUMN TABLEINFO.TABLE_ID_NAME IS '表的主键名称';

COMMENT ON COLUMN TABLEINFO.TABLE_ID_INCREMENT IS '表的主键递增量
缺省为1';

COMMENT ON COLUMN TABLEINFO.TABLE_ID_VALUE IS '主键当前值:缺省为0';

COMMENT ON COLUMN TABLEINFO.TABLE_ID_GENERATOR IS '自定义表主键生成机制
必需从
com.frameworkset.common.poolman.sql.PrimaryKey集成';

COMMENT ON COLUMN TABLEINFO.TABLE_ID_TYPE IS '主键类型(string,int)';

COMMENT ON COLUMN TABLEINFO.TABLE_ID_PREFIX IS '类型为string的主键前缀,可指定可不指定,缺省值为""';


CREATE UNIQUE INDEX PK_TABLEINFO0 ON TABLEINFO(TABLE_NAME);



ALTER TABLE TABLEINFO ADD   CONSTRAINT PK_TABLEINFO0 PRIMARY KEY (TABLE_NAME);

CREATE
    TABLE LISTBEAN
    (
        ID INTEGER NOT NULL,
        FIELDNAME VARCHAR(300),
        FIELDLABLE VARCHAR(300),
        FIELDTYPE VARCHAR(300),
        SORTORDER VARCHAR(300),
        ISPRIMARYKEY INTEGER,
        REQUIRED INTEGER,
        FIELDLENGTH INTEGER,
        ISVALIDATED INTEGER,
        CONSTRAINT LISTBEANKEY PRIMARY KEY (ID)
    );
insert into TABLEINFO (TABLE_NAME, TABLE_ID_NAME, TABLE_ID_INCREMENT, TABLE_ID_VALUE, TABLE_ID_GENERATOR, TABLE_ID_TYPE, TABLE_ID_PREFIX) values ('LISTBEAN', 'id', 1, 0, null, 'int', null);
commit;


修改src/poolman.xml中的数据库驱动、链接地址、账号和口令,即可运行工程下的测试用例:
src/com/frameworkset/sqlexecutor/ConfigSQLExecutorTest.java

poolman.xml中需要修改的属性,只要将其中的值改为特定数据库配置即可:
<jndiName>jdbc/derby-ds</jndiName>
    <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
     <url>jdbc:derby:D:/workspace/bbossgroups-3.2/bboss-mvc/database/cimdb</url> 
    <username></username>   
    <password></password> 
    <validationQuery></validationQuery>


更多持久层资料可以浏览:
http://yin-bp.iteye.com/category/55607
分享到:
评论
15 楼 yin_bp 2015-01-15  
huazi221 写道
有演示网站么?

目前没有
14 楼 huazi221 2015-01-15  
有演示网站么?
13 楼 yin_bp 2014-10-08  
huangjia7 写道
yin_bp 写道
huangjia7 写道
请问下尹工,在service层如何得到数据字典表 所定义的某个字典类型?


问题要描述清楚一点哦,获取什么字典类型啊


不好意思,是获得 基础字典类型。


还是不知道你要实现什么功能,看看下面这段代码是不是你需要的:
import com.frameworkset.dictionary.Data;
import com.frameworkset.dictionary.DataManagerFactory;
import com.frameworkset.dictionary.ProfessionDataManagerException;


try {
			Data data = DataManagerFactory.getDataManager().getData(dicttype);//根据字典类型获取字典数据对象
			String name = data.getItemNameByValue(value);//根据字典项值获取对应的名称
			String value = data.getItemValueByName(name);//根据字典项名称获取项的值
		} catch (ProfessionDataManagerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

12 楼 huangjia7 2014-10-08  
yin_bp 写道
huangjia7 写道
请问下尹工,在service层如何得到数据字典表 所定义的某个字典类型?


问题要描述清楚一点哦,获取什么字典类型啊


不好意思,是获得 基础字典类型。
11 楼 yin_bp 2014-10-08  
huangjia7 写道
请问下尹工,在service层如何得到数据字典表 所定义的某个字典类型?


问题要描述清楚一点哦,获取什么字典类型啊
10 楼 huangjia7 2014-10-08  
请问下尹工,在service层如何得到数据字典表 所定义的某个字典类型?
9 楼 yin_bp 2014-09-12  
如何不在xml中写sql,而直接在程序中写sql查出表中的所有记录?
方法如下:
List<HashMap> datas = SQLExecutor.queryList(HashMap.class,"select * from tablename");//其中的HashMap中key为表中字段名称的大写方式


或者

List<Bean> datas = SQLExecutor.queryList(Bean.class,"select * from tablename");


如果要带条件的话,可以采用下述方式:
List<HashMap> datas = SQLExecutor.queryList(HashMap.class,"select * from tablename where id=?",10);//其中的HashMap中key为表中字段名称的大写方式


或者

List<Bean> datas = SQLExecutor.queryList(Bean.class,"select * from tablename where id=?",10);
8 楼 yin_bp 2014-09-12  
终于这个时间Timestamp类型属性无法在界面上显示的原因:
页面标签使用方法,没有问题:
<pg:cell colName="createtime" dateformat="yyyy-MM-dd HH:mm:ss"/>

对应的数据库字段类型Timestamp,没问题。

bean属性定义,没问题:
@RequestParam(name="createdate",dateformat="yyyy-MM-dd hh:mm:ss")
    private Timestamp createdate;

bean属性get方法,问题就出在这个方法上面,返回值时Date类型,而不是Timestamp类型,改正后问题解决:
public Date getCreatedate()
{
       return createdate;
}

7 楼 yin_bp 2014-09-11  
在数据库中创建以下表:
create table TESTPK
(
  ID VARCHAR2(100),
  CT TIMESTAMP(6)
)

然后定义一个测试类TestPK
public static class TestPK
	{
		@PrimaryKey(auto=true)
		private String id;
		private Timestamp ct;
		public String getId() {
			return id;
		}
		public void setId(String id) {
			this.id = id;
		}
		public Timestamp getCt() {
			return ct;
		}
		public void setCt(Timestamp ct) {
			this.ct = ct;
		}
	}


再执行以下测试方法,看看能不能取到值:
/**
	 * create table TESTPK
		(
		  ID VARCHAR2(100),
		  CT TIMESTAMP(6)
		)
	 */
	@Test
	public void testpk()
	{
		TestPK test = new TestPK();
		test.setCt(new Timestamp(System.currentTimeMillis()));
		try {
			SQLExecutor.insertBean("insert into testpk(id,ct) values(#[id],#[ct])", test);
			System.out.println("id:"+test.getId());
			TestPK test1 =  SQLExecutor.queryObjectBean(TestPK.class, "select * from testpk where id=#[id]", test);
			System.out.println("id:"+test1.getId());
			System.out.println("ct:"+test1.getCt());
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


如果能够正常执行的话,就会在控制台输出以下值:
id:1fab4fcf-395d-11e4-9073-4437e6999f90
id:1fab4fcf-395d-11e4-9073-4437e6999f90
ct:2014-09-11 10:41:09.628


6 楼 yin_bp 2014-09-11  
例子中用了SQLExecutor,它的功能和ConfigSQLExecutor功能完全一样,不同的是ConfigSQLExecutor对应的sql配置在xml文档中。
5 楼 liqing0304 2014-09-11  
控制层的代码是为了获取当前时间
sql语句:insert into Rm_Rent_Items
  (ID, ROOMID,LESSEE, ITEMID,  LEASNUM, RENTDATE, PRICE, LENGTHS, RETURNDATE, PAYMODE, AMOUNT,
  DEPOSIT, REMARKS, ITEMSTATUS, CREATOR, CREATEDATE, MODIFIER, MODIFYDATE)
values
  (#[id],#[roomid], #[lessee], #[itemid],
  #[leasnum], #[rentdate], #[price],
  #[lengths], #[returndate], #[paymode], #[amount], #[deposit],
   #[remarks], #[itemstatus], #[creator], #[createdate],
  #[modifier], #[modifydate])没做任何处理,但插入进去的时间类型没有时分秒
4 楼 yin_bp 2014-09-11  
还有就是如果界面input name与bean属性名称一致:
@RequestParam(name="createdate",dateformat="yyyy-MM-dd HH:mm:ss")
    private Timestamp createdate;
就可以改为:
@RequestParam(dateformat="yyyy-MM-dd HH:mm:ss")
    private Timestamp createdate;

其他方面,除了那段多于的代码,没有看出有什么问题,怎么会存不进去时分秒呢!!
3 楼 yin_bp 2014-09-11  
另外你那个
@RequestParam(name="createdate",dateformat="yyyy-MM-dd hh:mm:ss")
    private Timestamp createdate;
中的时间格式最好改为:
@RequestParam(name="createdate",dateformat="yyyy-MM-dd HH:mm:ss")
    private Timestamp createdate;
2 楼 yin_bp 2014-09-11  
把sql语句也贴出来看看,另外,在控制器层这段代码应该是没有用的吧:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

bean.setCreatedate(Timestamp.valueOf(df.format(new Date())) );//设置创建时间
1 楼 liqing0304 2014-09-11  
在 entity的bean创建了
/** 创建日期 */
    @RequestParam(name="createdate",dateformat="yyyy-MM-dd hh:mm:ss")
    private Timestamp createdate;

在控制层用
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

bean.setCreatedate(Timestamp.valueOf(df.format(new Date())) );//设置创建时间

service层直接调用方法插入数据库

数据库的表格设计:
CREATEDATE TIMESTAMP(6) 创建日期
存储进去的数据没有时分秒

相关推荐

Global site tag (gtag.js) - Google Analytics