支持代码生成和多表查询的ORM框架MyORM(二)

前一页

四、系统运行时

1.类结构



 

上图中简单的列举一下myorm的一些主要的类和关系,描述如下:

 

 

类名

说明

my.myorm.tool.orm. MyORMListener

web应用的listener,加载代码生成器生成的配置信息。

 

my.myorm.tool.orm. TableBeanMap

代码生成器生成的配置文件在内存中的镜像

my.myorm.tool.jdbc .SQLManager

SQL执行器的创建工厂

my.myorm.tool.jdbc .SQLExecutor

SQL执行器

my.myorm.tool.jdbc .ResultSetHandler

查询结果处理器,将rusultset转换成javabean

my.myorm.tool.jdbc .ResultList

查询转换完毕后的结果,list结构(但不是list)

my.myorm.tool.jdbc .RecordMap

ResultList中的记录,map结构(但不是map),其中key为对应beanclass对象,value为对应的bean数组对象(之所以为数组,是因为多张表(如分表)对应着同一个javabean类)

my.myorm.tool.jdbc .DefaultBean

默认的javabean,在查询转换过程中,如果字段不属于任何表或找不到对应的javabean,则保存在该bean中,是一个map结构(但不是map

my.myorm.tool.jdbc .TransactionContext

事务上下文,开始/提交/回滚/结束事务。目前事务的实现是利用数据库自带的事务

my.myorm.tool.jdbc .Pages

分页对象,可以结合jsp页面进行分页

my.myorm.tool.jdbc .DataSourceFactory

接口,需要开发者去实现,返回一个datasource

 

2.用法举例

 

2.1实现DataSourceFactory

package tool;

 

import my.myorm.tool.jdbc.DataSourceFactory;

import javax.sql.DataSource;

import my.myspring.tool.SpringBeanProxy;

 

public class MyDataSourceFactory implements DataSourceFactory {

    public DataSource getDataSource() throws Exception {

        return (DataSource) SpringBeanProxy.getBean("dataSource1");

    }

}

这里的dataourcespring配置而成。数据源配置为:

<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

        <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>

        <property name="url"><value>jdbc:mysql://192.168.21.143:3306/pplive_role?characterEncoding=utf-8</value></property>

        <property name="username"><value>root</value></property>

        <property name="password"><value>qwe123</value></property>

        <property name="maxActive"><value>100</value></property>

        <property name="maxIdle"><value>2</value></property>

        <property name="maxWait"><value>120000</value></property>

        <property name="defaultAutoCommit"><value>false</value></property>

    </bean>

建议连接池用org.apache.commons.dbcp.BasicDataSource,因为开发、测试和发布myorm我用的都是这个连接池,其他的连接池没有测过。

2.2

SysLog log=new SysLog();

log.setUserName(user.getUserName());

log.setCreateTime(new Date());

log.setIP(request.getRemoteAddr());

log.setOperate("登录系统");

DAOManager.sysLogDao.save(log);

DAOManager是一个dao层管理器,由代码生成工具自动生成

如果log中含有自增一字段,执行完毕后该字段的值已经自动设置到该对象的相应属性上去了。

 

2.3

SysLog log=new SysLog();

log.setIP(request.getRemoteAddr());

DAOManager.sysLogDao.save(ip,log);

根据ip删除表中的记录

 

2.4

log.setIP(request.getRemoteAddr());

DAOManager.sysLogDao.update(ip,log);

根据ip更改表中的记录

 

2.5

SQLExecutor dbconn= SQLManager.getSQLExecutor();

String sql=”select a.*,b.* from  sys_user as a,sys_log as b”;

ResultList list=dbconn.query(sql,false,null);

for(int i=0;i<list.size();i++){

   RecordMap record=list.get(record);

   SysLog log=record.get(SysLog.class);

SysUser user=record.get(SysUser.class);

}

 

2.6 事务

Try{

 //事务开始

TransactionContext. beginTransaction();

 

SysLog log=new SysLog();

log.setIP(request.getRemoteAddr());

DAOManager.sysLogDao.save(ip,log);

 

log.setIP(127.0.0.1);

DAOManager.sysLogDao.update(ip,log);

 

//事务提交

TransactionContext. commitTransaction ();

}catch(Exception ex){

     //事务回滚

TransactionContext. commitTransaction ();

}finally{

//事务结束,如果开启了事物,必须保证该函数的执行,否则不能释放数据库链接

     TransactionContext. endTransaction();

}

有很多的重载函数,这里就不再一一说明了。详情请见API文档,或者与我话聊。

 

 

五、安装和配置

code.war(集成了SQL生成器、代码配置器和代码生成器):,拷贝到tomcatwebapps下即可,访问http://localhost[:port]/code即可

my.jar(myorm架包),加入到类路径中。包含了五个相互独立的包:

名称

说明

myaction

一个结合了ajaxaction框架,避免了strutsaction类中只能有一个execute的问题,也少了配置文件的麻烦。尚在测试中,咱略。

myproperties

没有什么新的东西,只是一个属性文件配置器,可以根据配置动态刷新各属性文件而不用重启服务器。

mylog4j

没有什么新的东西,封装了一下log4j的配置和启动,可以指定属性文件的路径。

myspring

没有什么新的东西,封装了一下spring的配置和启动

myorm

ORM的框架包

以上各个功能5个包都是通过web.xml配置的,配置代码和实例请见附件中的API文档。如图:

 

 

 

 

六、附件

1.code.war(代码工具)

2.包文件myorm,log4j,spring,mysqldriver等等)

3.DOC for API

4.样例文件web.xml和数据库设计文档)

 

七、附属语

这篇文档写得比较仓促,如果安装或使用的过程中出现了什么问题,直接给我反馈,谢谢。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值