休闲一刻

Just a cup for relax, hello, JacksonLin
posts - 12, comments - 129, trackbacks - 1, articles - 1
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

JacksonQuery 一句完成DAL操作

Posted on 2008-05-12 22:49 JacksonLin 阅读(250) 评论(7)  编辑 收藏

JackonQuery 1.02 beta1

前言:

     继前文JacksonQuery在前一版本的速度和设计的单向性做了重大调整.
     对前文的可以代替DAL的失言表示道歉.
     比EntityFramwork,更灵活,清晰,简单易用.(就是更SB)
     感谢jvk(blog名)对我介绍Subsonic,这东西实在强大,不过复杂了点.我迟点再细细研究.
     比Dataset性能好上好几陪.
     比SqlHelper更简单,易用,灵活度若减.速度在多于3至4个参数JacksonQuery性能更优.
     Linq更没得比了~
     详细说明后继

实例:

     A.数据库设计(自己写)
     
    
 
     B.实体类(自己写)

Code


     C.写连接数据库配置(自己写)

Code

      D.开始操作数据库(注意没有DAL层)

 1            JacksonQuery jq = Program.TestDB;
 2
 3            Guid ShopID = new Guid("656b55d5-c705-4465-8a64-66e8180bca00");
 4            DateTime LogDate = DateTime.Now;
 5
 6            MsgInf msgTarget = new MsgInf();
 7            msgTarget.LogMsg = "test8";
 8            msgTarget.LogDate = DateTime.Now;
 9            msgTarget.LogState = LogStateCodeType.test3;
10            msgTarget.ShopID = ShopID;
11            MsgInf msgTarget2 = new MsgInf();
12            msgTarget2.LogMsg = "test8";
13            msgTarget2.LogDate = DateTime.Now;
14            msgTarget2.LogState = LogStateCodeType.test3;
15            msgTarget2.ShopID = ShopID;
16            List<MsgInf> msgsTarget = new List<MsgInf>(2);
17            msgsTarget.Add(msgTarget);
18            msgsTarget.Add(msgTarget2);
19
20
21            ////插入,更新 ok
22            int insertRut = jq.Execute("InsertLog", ShopID, "test4", LogDate, 3);
23            int insertRut2 = jq.ExecuteI<MsgInf>("LogAdd2", msgTarget);
24            int insertRut3 = jq.Executes<MsgInf>("InsertLog", msgsTarget, true, JLStudio.IsolationLevel.Unspecified);
25
26
27            ////////返回单值//ok
28            int LogCountRut = (int)jq.GetReturn("CountLog(ShopID,LogDate)", ShopID, LogDate);//单输出列可忽略不写
29            int LogCountRut2 = (int)jq.GetReturn("CountLog(CountL,LogDate,ShopID)"null, LogDate, Guid.Empty);//输入位置被忽略
30
31
32            //////返回list ok
33            List<MsgInf> msgs1 = jq.GetList<MsgInf>("GetTodayLogs");
34            List<MsgInf> msgs2 = jq.GetList<MsgInf>("GetLogs", ShopID, LogDate);
35            List<MsgInf> msgs3 = jq.GetList<MsgInf>("GetLogs(ShopID,LogDate)", ShopID, LogDate);
36            List<MsgInf> msgs4 = jq.GetList<MsgInf>("GetLogs(LogDate,ShopID)", LogDate, ShopID);
37
38
39            //////TSQL ok
40            List<MsgInf> msgs5 = jq.GetList<MsgInf>("select * from Tbl_Log2");
41            int insertRut4 = (int)jq.Execute("update Tbl_Log set LogState=1 where ShopID='{0}' and LogState is null", ShopID);
42            List<MsgInf> msgs6 = jq.GetList<MsgInf>("select * from Tbl_Log where ShopID='{0}'", ShopID);
43
44
45            ////事务
46            JacksonQuery jq2 = Program.TestDB;
47            try
48            {
49                jq2.BeginTran(JLStudio.IsolationLevel.ReadUncommitted);
50                int insertRut5 = jq2.ExecuteI<MsgInf>("InsertLog", msgTarget);
51                int insertRut6 = jq2.ExecuteI<MsgInf>("InsertLog", msgTarget);
52
53                //throw new Exception("just a test");
54                jq2.CommitTran();
55            }

56            catch
57            {
58                jq2.RollbackTran();
59                throw;
60            }


功能包括:
      一句完成所有单存储过程或TSQL操作.
      事务操作更简单易用(小于3骨句).
      可以对DA返回实体数据集,例如:List<MsgInfo>
      可以对DA输入参数为数据实体,例如MsgInfo ,或数据实体集 List<MsgInfo>,并提供事务操作.
      可输入任意参数(必须按照JQL JacksonQueryLanguage),并进行智能转换.
      输入参数可以有限定的的参入.以及类型智能转换.缺失预校.
      智能实体类到数据库元素的映射以及类型转换.(除了xml)
      支持简单单值返回.输出DataReader.支持TSQL.
      减小80%以上的DAL代码,以及80%以上的DAL代码维护.提高生产效率.
      
 
JacksonQuery类图:


作者:
TrackBack:http://www.cnblogs.com/JacksonLin/
Mail: linjiachenggz@qq.com

JacksonLin  广州尔诺科技有限公司 APIEngine架构师






 

Feedback

#1楼 [楼主]   回复  引用  查看    

2008-05-13 16:00 by JacksonLin      
记录一:已经在公司数据库上用了.现在40W数据据量,一切正常.

#2楼    回复  引用  查看    

2008-05-14 14:19 by 金色海洋(jyk)      
记录一下,有源码下载吗?

#3楼 [楼主]   回复  引用  查看    

2008-05-14 16:03 by JacksonLin      
记录二:已经在公司数据库上用了.现在60W数据量,有bug.metux问题.解决

过2周有性能报告.

再过2周有release发布.

原码看codeplex.可能又要在1个月.结合codesmith一次发布.
如果我不给项目经验杀死的话.

#4楼 [楼主]   回复  引用  查看    

2008-05-17 23:36 by JacksonLin      
http://www.cnblogs.com/JacksonLin/articles/1201666.html

完成代码生成代码.将变态推向更变态

#5楼    回复  引用    

2008-06-13 15:02 by 周巍 [未注册用户]
我用 NHibernate,除了定义 Domain 层和建数据库表,其它什么都不用干了。不过可能性能没你的好。

#6楼 [楼主]   回复  引用  查看    

2008-06-13 15:48 by JacksonLin      
NHibernate以model层作dal操作的.
加上生成和配置.
看上去Nhibernate这种ORM不太合适.
与其我觉得ado.net的ORM是最成熟的,也就EntityFramework那种.
jacksonquery的orm也是有欠缺.

#7楼 [楼主]   回复  引用  查看    

2008-07-17 11:58 by JacksonLin      
@金色海洋(jyk)
可以下载了

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-09-01 14:11 编辑过


相关链接: