当然还是开源: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. 我要带徒弟学写JAVA架构,引路架构师之路(Jeecg开源社区)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. java开发必学知识:动态代理

    目录 1. 引言 2. 代理模式及静态代理 2.1 代理模式说明 2.2 静态代理 2.3 静态代理局限性 3. 动态代理 3.1 JAVA反射机制 3.2 JDK动态代理 3.2.1 JDK动态代理 ...

随机推荐

  1. 9、ASP.NET MVC入门到精通——Controller(控制器)

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 Controller主要负责响应用户的输入.主要关注的是应用程序流,输入数据的处理,以及对相关视图(View)输出数据的提供. 继承自:Sy ...

  2. Xcode 设置代码不自动换行

    "command + ,"打开设置界面后,找到"Text Editing" 然后选择"Indentation", 最后找到"lin ...

  3. Iphone H5上传照片被旋转

    最近做项目发现在Iphone下,我们上传图片都会被翻转,最后查阅资料发现,的确是IOS的问题 不说过程,直接解决方法 iOS下,html方式使用<input type="file&qu ...

  4. Spket在Eclipse/MyEclipse下的安装和配置(图文教程)

    一.安装Spket 第一种方法:网上更新方式 1.插件首页:http://www.spket.com2.插件名称:Spket IDE3.更新连接(Update Site):http://www.spk ...

  5. 页面插入Flash方式

    法一 <!-- 播放Flash动画代码 --> <div class="logoFlash"> <object classid="clsid ...

  6. 关于nginx中不用.htaccess 用在ningx.conf中配置的问题

    官网一直出现http://4**.**..7/php/index.php/admin/base/getConfigs报错404错误问题, 问题一:URL重写问题(nginx配置问题) 问题二:vue中 ...

  7. 权限系统(RBAC)的数据模型设计

    前言: RBAC是Role-Based Access Control的缩写, 它几乎成为权限系统的数据模型的选择标配. 之前写个两篇关于权限系统的文章, 主要涉及如何在应用中实现权限控制, 对权限系统 ...

  8. angularJS常用的内置方法

    angular.lowercase(aaa); angular.uppercase(bbb); angular.isString(); angular.isNumber(); angular.isAr ...

  9. springboot 日志1

    技术交流群: 816227112 Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J,  ...

  10. python_运算符与表达式

    运算符与表达式 python运算符 运算符 功能说明 + 算术加法,列表.元组.字符串合并与连接,正号 - 算术减法,集合差集,相反数 * 算术乘法,序列重复 / 真除法 // 求整商,但如果操作数中 ...