当然还是开源: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. 经典HTML5小游戏 支持各种浏览器 (围住神经猫)

    源码地址: http://files.cnblogs.com/files/liujing379069296/MyCat.rar 插件地址:http://files.cnblogs.com/files/ ...

  2. HTTP 错误500.19 -Internal Server Error

    原文:HTTP 错误500.19 -Internal Server Error HTTP 错误500.19 -Internal Server Error 错误代码 0x80070021 评论1 字号: ...

  3. 一个大浪Java罢工(一个)安装JDK和环境变量配置

    一个.基础知识 (一)什么是Java? Java是一种能够撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台( ...

  4. 第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介(原创)

    天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...

  5. [Unity-7] Update和FixedUpdate

    1.Update和FixedUpdate这是Unity既用内提供的帧功能接口相关联. Update():这个函数里面的内容每一帧都会被运行一次.这个函数有一个特点,那就是运行的频率等于帧率.而这个帧率 ...

  6. Linux生成动态库系统

    Linux生成动态库系统 一个.说明 Linux下动态库文件的扩展名为 ".so"(Shared Object). 依照约定,全部动态库文件名称的形式是libname.so(可能在 ...

  7. 《Visual Studio Magazine》2013年读者选择奖—软件类

    <Visual Studio Magazine>会在每年的下半年向读者发出投票邀请,读者将在28个大类,超过500个开发工具的名单中选出他们认为最好的产品,以票数评出各分类的金.银.铜奖. ...

  8. js 实现复制粘贴文本过滤(保留文字和图片)

    实现复制粘贴文本过滤(保留文字和图片) demo如下: <head> <meta http-equiv="Content-Type" content=" ...

  9. android音乐播放器开发 SweetMusicPlayer 智能负载直插式歌词

    在一份书面的使用MediaPlayer播放音乐, http://blog.csdn.net/huweigoodboy/article/details/39862773.假设没有本地歌词怎么办?如今来将 ...

  10. iOS_1_加法器

    : BeyondViewController.h // // BeyondViewController.h // 01_calc // // Created by beyond on 14-7-20. ...