当然还是开源:https://github.com/xiaose1205/sigola     初学者有用,高手可以给点建议,勿喷啊。net转java,有些思想还没有那么快转。希望得到大家的支持啊

使用了dbutils1.5,数据库暂时支持mysql.

使用说明: Dao继承于BaseDao,Dto继承于BaseDto,IDao继承于IRepository(方便使用google.guicy); Dto需要实现BaseDto中的toMap()与getTbName();

       public class demoModel extends BaseDto {
public demoModel()
{
this.setTbName("demo");
}
@Override
public Map toMap()
{
Map map = new HashMap();
......
return map;
}
}

Dao的实现比较简单:

         public class demoDao extends BaseDao {}

以下为实现的一些逻辑。

    demoModel model = new demoModel();
demoDao dao = new demoDao();
/* 新增 */
Random random = new Random();
model.setUserName("demo" + random.nextInt());
model.setUserPwd("123456");
int reslut = dao.Add(model);
System.out.println(reslut);
/* 修改 */
Random random = new Random();
model.setUserName("update" + random.nextInt());
model.setId(10);
dao.Save(model);
/* 删除 */
model.setId(1);
dao.Remove(model);

以往分页比较麻烦,现加入了PageList,内部实现了List与count的。

pageList的源码:可以当作普通的list使用。

public class PageList<E> extends ArrayList<E> {

    private Long totalCount = (long) 0;

    public Long getTotalCount() {
return totalCount;
} public void setTotalCount(Long totalCount) {
this.totalCount = totalCount;
}
}
 PageList plist = null;
List list = null;demoDao login=new demoDao();
{
DataAction action = new DataAction();
action.setTable(model).setfileds("*");
/* 对in进行适当的优化,一条数据的时候自动会进入= */
action.where("userName", "12", RelationEnum.In);
action.where("userName", "wan", RelationEnum.LikeLeft);
action.where("userName", "an", RelationEnum.Like);
action.order("id", OrderByEnum.Desc);
/* list */
list = action.getList(demoModel.class);
showlist(list);
/* list with count 对count查找的结果适当的优化,减少一次查询 */
plist = action.getPageList(demoModel.class);
showlist(plist);
System.out.println(plist.getTotalCount());
} {
/* list */
list = logic.FindList(0, 10);
showlist(list);
/* list with count */
plist = logic.FindPageList(0, 10);
showlist(plist); /*
* select count(1) from demo where name='wangjun' order by id desc;
* 自动转换 'id,userName' 至'count(1)'
*/
System.out.println(logic.Cast().setfileds("id,userName")
.order("id").where("userName", "wangjun")
.getCount()); /* 执行count的结果 */
System.out.println(logic.Cast().setfileds("count(id)")
.order("id").where("userName", "wangjun")
.getCount()); /*自动判断是否加入and的条件 */
System.out.println(logic.Cast().setfileds("count(id)")
.order("id").where("userName", "wangjun")
.where("and LENGTH(id)>=2")
.where("LENGTH(id)>=2").getCount());
}
 

如果需要执行简单的sql

  /* execute with nomarl sql */
DataAction action = new DataAction();
/* select into List */
list = action.getList(demoModel.class,
"select * from demo limit 2,3");
showlist(list);
/* delete without params */
action.excute("delete from demo where id =1"); /* insert with params */
Object[] obj = new Object[2];
obj[0] = 1;
obj[1] = "123jdhfjh";
action.excute(
"insert into demo (id,username)values(?,?)", obj);
怎么用到play上面呢,使用插件的形式,添加sigolaPlugin(在你自己的项目中,名字可以自己定义)
public class sigolaPlugin extends PlayPlugin {
/*内置一个class继承IdbBase,是想getConnecion的方法,内部数据会主动获取这个操作*/
class dbBase implements IdbBase {
@Override
public Connection getConnection() {
// TODO Auto-generated method stub
return DB.getConnection();
}
}
public static boolean IsReady = false;
/*启动后赋值,基于play 1.2.4*/
@Override
public void onApplicationReady() {
if (!IsReady) {
MysqlHelper.idbBase = new dbBase();
System.out.println("onApplicationReady loading mysqlhelper.DBConnection");
IsReady = true;
} }
}

我的Net版的HelloData  http://www.cnblogs.com/xiaose1205/archive/2013/04/02/2995256.html#2649218

java 的sigola orm 的开发,第一次学写java,可以用在play上面的更多相关文章

  1. 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发

    简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...

  2. 我要带徒弟学写JAVA架构,引路架构师之路(Jeecg开源社区)

    带徒弟学JAVA架构(Jeecg社区)      Java程序员如何打破工作2,3年的瓶颈问题,如何更上一层楼?      太多的巧合,让我接触到了开源,通过JEECG与很多朋友交流后,让我有了帮助别 ...

  3. Java基础学习总结(87)——坚持写Java等技术类博客的好处

    1.加深对技术点的理解 每天写博客,可以加深对技术点的理解,假如工作中,对某个技术点运用的不熟,当你通过博客的形式写出来,这个过程中,遇到不懂的知识点,你就会查阅相关的资料,弄明白他. 2.自己日后用 ...

  4. [转]恕我直言,在座的各位根本不会写 Java!

    导语 自 2013 年毕业后,今年已经是我工作的第 4 个年头了,总在做 Java 相关的工作,终于有时间坐下来,写一篇关于 Java 写法的一篇文章,来探讨一下如果你真的是一个 Java 程序员,那 ...

  5. 细思极恐-你真的会写java吗?

    导语 自2013年毕业后,今年已经是我工作的第4个年头了,总在做java相关的工作,终于有时间坐下来,写一篇关于java写法的一篇文章,来探讨一下如果你真的是一个java程序员,那你真的会写java吗 ...

  6. 恕我直言,在座的各位根本不会写 Java!

    恕我直言,在座的各位根本不会写 Java! java思维导图 作者:Lrwin,软件架构师. 导语 自 2013 年毕业后,今年已经是我工作的第 4 个年头了,总在做 Java 相关的工作,终于有时间 ...

  7. 为什么你学过Java却忘光了——记第一次助教同学见面会

    大约两周之前,主讲老师刘志勇老师和我约定,让我上周四到课堂上和同学们认识.交流一下.一开始我不太明了去和大家见面要说些什么,也不太理解这么做的必要性是什么.但随着日子临近,我请教了周筠老师,周筠老师和 ...

  8. 手机APP开发:学JAVA转安卓APP开发是不是很容易?

    成都亿合云商小编为您分享:Android开发是以Java语言为基础的,Android 虽然使用Java 语言作为开发工具,但是在实际开发中发现,还是与Java SDK 有一些不同的地方.Android ...

  9. 学Android开发,入门语言java知识点

    学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...

随机推荐

  1. 它们的定义app.config中间section节点和在执行中使用

    如果现在我们需要在app.config一个节点的在下面的例子中,定义,我们需要如何进行操作? <configSections> <section name="integra ...

  2. MySQL 升级方法指南大全

    原文:MySQL 升级方法指南大全 通常,从一个发布版本升级到另一个版本时,我们建议按照顺序来升级版本.例如,想要升级 MySQL 3.23 时,先升级到 MySQL 4.0,而不是直接升级到 MyS ...

  3. 《python源代码剖析》笔记 python虚拟机中的函数机制

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.Python虚拟机在运行函数调用时会动态地创建新的 PyFrameObject对象, 这 ...

  4. Visual Studio测试工具TestDriven.NET2.2

    原文:Visual Studio测试工具TestDriven.NET2.2 关于TestDriven.NET的文章很多,有很详细的说明,我不太会单元测试只是每次要运行程序才能调试觉得太麻烦了,所以找了 ...

  5. phpcms 模板常用标签指南

    1.关于SEO <meta name="keywords" content="{$SEO[keyword]}"/> <meta name=&q ...

  6. C#泛型回顾点滴

    前言 C#的泛型一直是学习者津津乐道的课题了,这确实是一个非常有用的特性,不过在实际使用中,还是有很多需要注意的地方,我们需要通过自己动手实践以及结合理论进行理解,最终总结出自己的编码规范和最佳实践 ...

  7. 国内外最全面和主流的JS框架与WEB UI库

    当下对于网站前段开发人员来说,很少有人不使用一些JS框架或者WEB UI库,因此这些可以有效提高网站前段开发速度,并且能够统一开发环境,对于不同浏览器的兼容性也不需要程序员操心,有了这些优点,当然大家 ...

  8. TodoList开发笔记 – PartⅠ

    做了一年多的桌面软件,最近开始转向Web方面的开发,既然比较熟悉Net那么首当其冲就是学习ASP.Net,以及HTML.CSS.Javascript. 为了检验这个把星期来的学习成果,着手做了一个To ...

  9. Android Wear和二维码

    这是一篇发布在Android官方开发者社区博客,15年年初的时候就看到了这篇文章,直到现在才有时间把它翻译下来. 这是一篇如何在Android Wear上面如何正确地展示二维码的文章,里面有许多的经验 ...

  10. Operating System 概述和学习图

    Operating System 概述和学习图 大神绕道,鄙人初入 OS . 一.想知OS,先知计算机系统概述 #图解 #基本指令和中断周期 #直接内存存取(Direct Memory Access, ...