java 的sigola orm 的开发,第一次学写java,可以用在play上面
当然还是开源: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上面的更多相关文章
- 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发
简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...
- 我要带徒弟学写JAVA架构,引路架构师之路(Jeecg开源社区)
带徒弟学JAVA架构(Jeecg社区) Java程序员如何打破工作2,3年的瓶颈问题,如何更上一层楼? 太多的巧合,让我接触到了开源,通过JEECG与很多朋友交流后,让我有了帮助别 ...
- Java基础学习总结(87)——坚持写Java等技术类博客的好处
1.加深对技术点的理解 每天写博客,可以加深对技术点的理解,假如工作中,对某个技术点运用的不熟,当你通过博客的形式写出来,这个过程中,遇到不懂的知识点,你就会查阅相关的资料,弄明白他. 2.自己日后用 ...
- [转]恕我直言,在座的各位根本不会写 Java!
导语 自 2013 年毕业后,今年已经是我工作的第 4 个年头了,总在做 Java 相关的工作,终于有时间坐下来,写一篇关于 Java 写法的一篇文章,来探讨一下如果你真的是一个 Java 程序员,那 ...
- 细思极恐-你真的会写java吗?
导语 自2013年毕业后,今年已经是我工作的第4个年头了,总在做java相关的工作,终于有时间坐下来,写一篇关于java写法的一篇文章,来探讨一下如果你真的是一个java程序员,那你真的会写java吗 ...
- 恕我直言,在座的各位根本不会写 Java!
恕我直言,在座的各位根本不会写 Java! java思维导图 作者:Lrwin,软件架构师. 导语 自 2013 年毕业后,今年已经是我工作的第 4 个年头了,总在做 Java 相关的工作,终于有时间 ...
- 为什么你学过Java却忘光了——记第一次助教同学见面会
大约两周之前,主讲老师刘志勇老师和我约定,让我上周四到课堂上和同学们认识.交流一下.一开始我不太明了去和大家见面要说些什么,也不太理解这么做的必要性是什么.但随着日子临近,我请教了周筠老师,周筠老师和 ...
- 手机APP开发:学JAVA转安卓APP开发是不是很容易?
成都亿合云商小编为您分享:Android开发是以Java语言为基础的,Android 虽然使用Java 语言作为开发工具,但是在实际开发中发现,还是与Java SDK 有一些不同的地方.Android ...
- 学Android开发,入门语言java知识点
学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...
随机推荐
- MVC Bootstrap Helpers
ASP.NET MVC Bootstrap Helpers 阅读目录 序言 内置的HTML Helpers 创建自定义的Helpers 使用静态方法创建Helpers 使用扩展方法创建Helper ...
- 【百度地图API】如何制作可拖拽的沿道路测距
原文:[百度地图API]如何制作可拖拽的沿道路测距 摘要: 地图测距,大家都会,不就map.getDistance麼.可是,这只能测任意两点的直线距离,用途不够实际啊.比如,我想测试北京天安门到北京后 ...
- Java初认识--Java语言的书写规范及基本的运算符
一.Java中名称的规范和书写程序的规范. 1.Java中的名称规范: (1)包名全是小写:xxyyzz: (2)类名接口名:首字母大写:XxxYyy: (3)变量名和函数名:变量名不能是关键字:多单 ...
- MVC验证11-对复杂类型使用jQuery异步验证
原文:MVC验证11-对复杂类型使用jQuery异步验证 本篇体验使用"jQuery结合Html.BeginForm()"对复杂类型属性进行异步验证.与本篇相关的"兄弟篇 ...
- Asp.net vNext 学习3
Asp.net vNext 学习之路(三) asp.net vNext 对于构建asp.net 程序带来了一些重大的改变,让我们开发asp.net 程序的时候更加的方便和高效. 1,可以很容易的去管理 ...
- 【SSRS】入门篇(四) -- 向报表添加数据
原文:[SSRS]入门篇(四) -- 向报表添加数据 定义好数据集后 [SSRS]入门篇(三) -- 为报表定义数据集 ,就可以开始设计报表了,将要显示在报表的字段.文本框.图像和其他项从工具箱拖放到 ...
- sql材料分级统计及汇总案例参考
--第一步:根据系统编号.列.单价分组求和 select CLBH,DJ,sum(SL) as SL,sum(JE) as JE,Lie into #TempSZCMX from #ShouZhiCu ...
- J2EE开发HelloWorld
J2EE开发实战基础系列一 HelloWorld 开始咱们的第一个程序,首先是配置环境,按照上一章所描述的方式下载开发工具,然后配置Java环境变量,给大家看下具体的结构: 环境变量配置OK的提示,如 ...
- 开篇ASP.NET MVC 权限管理系列
开篇 [快乐编程系列之ASP.NET MVC 权限管理系列]一.开篇 用了好长一段时间的ASP.NET MVC,感觉MVC真的是很好用,最近一年左右做了两个中小型项目,觉得还是很多地方不是很熟悉的 ...
- 在winform中怎样实现好看的treeview样式
这是在网上截取的一张图,就是想做成这样的效果,不能用devExperss控件,主要是不知道他的那个“组织机构列表“用的是不是panel,怎样弄的样式