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,就去学 ...
随机推荐
- 使用Webbrowser的一点心得体会
原文:使用Webbrowser的一点心得体会 自从用上VS2005后,发现多了个WebBrowser控件(.net 2003中不带),为图方便吧,有好多小工具就用这个写的,慢慢也有点体会了,总结一下, ...
- Swift入门教程:基本语法(四)
可选类型 可选类型的使用场合 当一个值可能存在,可能不存在的时候,就用可选类型 比如查找字符k在某个字符串中的位置 如果字符串是"jake",说明k的位置存在,是2 如果字符串是& ...
- 七牛云存储C#例用小例子 C#笔记
最近有需求要把网站的图片传到云存储上去.于是就找到了七牛.看上面的SDK...看了才发现里面注释很少.当时看的头大.在网上搜一下,基本上没有好的例子.给初学者带来很大的不便!不过最后还是做出来了.在这 ...
- iOS 学习资料汇总
(适合初学者入门) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解了一些 iOS ...
- DateTime.ToString("dd/MM/yyyy");后,不能直接Convert.ToDateTime的解决:
原文:DateTime.ToString("dd/MM/yyyy");后,不能直接Convert.ToDateTime的解决: DateTime.ToString("dd ...
- 【POJ3037】Skiing 最短路
题意: 有个n*m的滑雪场,bessie要从(1,1)滑到(n,m),问最小时间. 起始有一个速度v,然后每从一个点A到一个点B(仅仅能上下左右走,每次一格),速度就会乘上2^(权值A-权值B). 然 ...
- Android项目---LayoutParams
LinearLayout.LayoutParams extends ViewGroup.MarginLayoutParams java.lang.Object ↳ android.view.Vi ...
- JDK6、Oracle11g、Weblogic10 For Linux64Bit安装部署说明
JDK6.Oracle11g.Weblogic10 For Linux64Bit安装部署说明 项目编号 编写人 成 编写日期 2013/07/29 审核 修订说明 目录 JDK6.ORACLE11G. ...
- jquery扩展方法案例
-----------------扩展方法: $.extend({ "max": function (a, b) { if (a > b) return a; }, &quo ...
- Visual Studio 2013 Use HTTPS (SSL) On Web Application Projects
公司调试HTTPS接口会用到,原文:http://www.codeproject.com/Tips/766918/Visual-Studio-Use-HTTPS-SSL-On-Web-Applicat ...