PetaPojo——JAVA版的PetaPoco程序员小王啊

由于工作的一些原因,需要从C#转成JAVA。之前PetaPoco用得真是非常舒服,在学习JAVA的过程中熟悉了一下JAVA的数据组件:

基于以上的理解,便打算造一个JAVA版的PetaPoco——PataPojo:

下载petapojo.jar包后,在项目中进行引用

实体Mapping

//对应表user_info@TableName("user_info")//主键映射,字段名,是否自增@PrimaryKey(value="id",autoIncrement=true)publicclassUserInfo{privateintid;privateStringuserName;//列名与字段名的映射(若无注解,则按字段名映射为列名)@Column("password")privateStringpassword;//该字段不进行映射@IgnoreprivateStringnone;//...getterandsetter}下一步,使用database.java进行查询:

DruidDataSourcedataSource=newDruidDataSource();//配置dataSource//...Databasedatabase=newDatabase(dataSource);ListuserList=database.query(UserInfo.class,"SELECT*FROMuser_info");for(UserInfouserInfo:userList){System.out.println(userInfo.getUserName());}查询第一行第一列:

Integernumber=database.executeScalar(Integer.class,"SELECTCOUNT(1)FROMuser_info");或者,查找第一条记录:

UserInfouserInfo=database.firstOrDefault(UserInfo.class,"SELECT*FROMuser_infoWHEREid=",123);分页

//参数说明://1-页索引//10-页大小//20-是指age>的参数值PageInfopagedList=database.pagedList(UserInfo.class,1,10,"SELECT*FROMuser_infoWHEREage>ORDERBYcreateDateDESC",20);返回的PageInfo描述:

/***分页泛型*/publicclassPageInfo{//当前页索引privateintcurrentPage;//总页数privateinttotalPages;//总记录数privateinttotalItems;//每页记录数privateintitemsPrePage;//当前页列表privateListitems;publicPageInfo(){items=newArrayList<>();}//...//getterandsetter}执行没有返回的SQL:

//返回影响行数introw=database.executeUpdate("DELETEFROMuser_infoWHEREid=",123);实体的增删改新增:

UserInfouserInfo=newUserInfo();userInfo.setUserName("PetaPojo");userInfo.setPassword("123123");database.insert(userInfo);修改:

UserInfouserInfo=database.firstOrDefault(UserInfo.class,"SELECT*FROMuser_infoWHEREid=",1);userInfo.setPassword("123456");database.update(userInfo);删除:

UserInfouserInfo=database.firstOrDefault(UserInfo.class,"SELECT*FROMuser_infoWHEREid=",1);PetaPojo可以允许简化为:

在此基础上,PetaPojo提供了一个非常便捷的SQL查询组装器。

基础模式:

intid=1;Sqlsql=Sql.create().append("SELECT*FROMuser_info").append("WHEREid=",id);UserInfouserInfo=database.firstOrDefault(UserInfo.class,sql);或者:

intid=1;Sqlsql=Sql.create().append("SELECT*FROMuser_info").append("WHEREid=",id).append("ANDcreateDate>=",DateTime.now());UserInfouserInfo=database.firstOrDefault(UserInfo.class,sql);同样,可以根据不同的条件来进行组装:

intid=1;Sqlsql=Sql.create().append("SELECT*FROMuser_info").append("WHEREid<>",id)if(age!=null)sql.append("ANDage>",age);if(startDate!=null)sql.append("ANDcreateDate>=",startDate);ListuserList=database.query(UserInfo.class,sql);在SQL组装时,参数列表是无限的,只需要与SQL语句中的参数替代符相匹配即可,如:

intid=1;DateTimenow=DateTime.now();Sqlsql=Sql.create().append("SELECT*FROMuser_info").append("WHEREid<>ANDcreateDate>=",id,now);ListuserList=database.query(UserInfo.class,sql);在Sql.append的基础上,PetaPojo提供了更为便捷的链式函数:

Sqlsql=Sql.create().select("*").from("user_info").where("id=",1).where("createDate>=",DateTime.now().toString()).where("age>=ANDage<=",10,20).orderBy("createDateDESC");PageInfopagedList=database.pagedList(UserInfo.class,1,10,sql);基于自动添加查询列的功能,上述语句可变改为:

Sqlsql=Sql.create().where("id=",1).where("createDate>=",DateTime.now()).where("age>=ANDage<=",10,20).orderBy("createDateDESC");PageInfopagedList=database.pagedList(UserInfo.class,1,10,sql);因此,在一些复杂的查询中,我们可这样用:

因此,PetaPojo在枚举的支持上做了一些扩展。

首先,PetaPojo定义了一个枚举接口:

/***枚举必须要实现的接口*/publicinterfaceIEnumMessage{intgetValue();StringgetName();}并提供了一个枚举帮助类:

/***用户类型*/publicenumUserTypeimplementsIEnumMessage{Student(1,"学生"),Teacher(2,"老师"),Coder(4,"码农");privateintvalue;privateStringname;UserType(intvalue,Stringname){this.value=value;this.name=name;}@OverridepublicintgetValue(){returnthis.value;}@OverridepublicStringgetName(){returnthis.name;}}对应的实体:

@TableName("user_info")@PrimaryKey(value="id",autoIncrement=true)publicclassUserInfo{privateintid;privateStringuserName;privateStringpassword;//直接使用枚举,数据库中作为int型进行存储privateUserTypeuserType;privateDateTimecreateDate;//...gettersetter}当SQL查询中的参数值为org.joda.time.DateTime时,这样使用:

Sqlsql=Sql.create().where("createDate>=",DateTime.now().toString());//将DateTime类型toString即可

THE END
1.PETAPETA无限旅馆2D版下载1.0最新版PETAPETA无限旅馆2D版下载1.0最新版,历史版本安装尽在7723手游网,同时还可以查看最新版PETAPETA无限旅馆2D版1.0介绍、应用截图、网友评论等PETAPETA无限旅馆2D版下载安装信息。https://www.7723.cn/ups/1790168
2.旅猫世界电脑版下载旅猫世界网页版旅猫世界电脑版 猜你喜欢 时尚少女电脑版 v1.0.3 爱莎化妆公主游戏电脑版 v1.7 快乐小鸡手游电脑版 v1.0.2 明日之后电脑版 v1.0.335 猎魂觉醒电脑版 v1.0.514621 乌托邦起源电脑版 v1.0.0730 我的世界网易版电脑版 v2.9.5.234925 生存战争2电脑版 v2.2.10.5 我的起源电脑版 v2.1 分类...https://www.iuuu9.com/pc/9895591442806
3.内存小又能联机的游戏大全内存小又能联机的游戏集锦内存小又能联机的游戏 内存小又能联机的游戏有哪些?这里都是小编推荐的内存小又好玩的联机游戏,游戏虽然内存小但是内容是非常的丰富,玩家在玩的过程中非常的有意思,玩家还可以邀请好友一起玩,游戏里的玩法机制非常的好,快喊上小伙伴一起来玩吧!https://www.6137.net/ztag/ncxynljdyx/
1.petapeta无限旅馆官方正版下载petapeta无限旅馆安卓版下载玩家自制创游版2D恐怖游戏 游戏介绍 petapeta无限旅馆是一款由玩家创作的2D恐怖游戏。探索迷宫,收集线索和道具,找到出路并成功逃脱。在petapeta无限旅馆中,惊险刺激的逃亡过程,全新的挑战,带给你极致的刺激。 petapeta无限旅馆播放 1.在每个场景中,点击可疑的地方进行搜索,收集线索和道具,并使用收集的线索和道具来解谜...https://www.reliyou.com/shouyou/186073.html
2.PETAPETA无限旅馆2D版下载中文版分类:动作冒险 大小:1.9M 语言:中文 版本:v1.0 安卓版 时间:2023-12-20 08:07 星级: 官网:暂无 厂商: 平台:Android 标签:逃脱解谜游戏解谜游戏烧脑游戏大全剧情解谜手游恐怖解谜拉针解谜刺激挑战,不同玩法。应用截图应用介绍 PETAPETA无限旅馆2D版是款好玩的恐怖解谜手游,快来选择不同的场景进行挑战吧,恐怖的...https://www.qqtn.com/azgame/895378.html
3.「Roblox无限旅馆」petapeta通关[doors]小时候玩这游戏吓得我们集体糕巢 【deltarune第三章同人】m1ke战 通关!(饶恕) 我用积木建造了一辆超级货车来运输物品!ROBLOX (roblox刀刃球)疑似刀刃球彩蛋 Papyrus:我复活辣。UnderTale Call Of The Void2~2.5阶段通关 (致命交易版)W4Ek up通关 ...https://xbeibeix.com/video/BV1JT4y1h7Uk
4.无限旅馆下载无限旅馆最新版下载无限旅馆app下载无限旅馆下载栏目提供了最全的无限旅馆版本内容,喜欢这款游戏的玩家,可以下载最新的官方版本,还能够找到相同类型的游戏,保证每一位来到这里的玩家都能够找到感兴趣的游戏版本。更新时间:2024-11-13无限旅馆版本大全 手机版 无限旅馆相关游戏 邪恶修女2 安卓版 找物解谜|173.70MB 同盟神探 安卓版 找物解谜|913MB...https://shouyou.3dmgame.com/zt/198959_game/
5....模拟器地图模组(PetaSimulatorIndonesia)安卓版下载这个新的bussid 地图集合提供了印度尼西亚巴士模拟器地图的完整选择,包括bussid map twist 44,越野bussid 地图以及地图预览地图然后bussid 极端地图在泥印度尼西亚模拟器巴士地图. 展开 电脑版下载 关于CC加速器https://www.ccplay.cc/package/203027.html
6.泰坦之旅传奇完整版2024官方最新版下载您可能感兴趣 动作冒险 推荐下载海贼王心之一方手游 V3.8 【动作冒险】 全民血战安卓版 V1.10.01 【动作冒险】 假面骑士龙骑 V1.0.0 安卓版 【动作冒险】 网友评论 更多评论...王国英雄3最新版 v1.2.5 PETAPETA无限旅馆2D版 v1.0 当客下载站 ? 版权所有 闽ICP备2022016011号-5...https://m.downkr.com/ziyuan/435532.html
7.Kaiyun(云开)体育App(官方)2023最新下载IOS/安卓通用版/...v5.2.2.1 官方最新版 网友评分:9.6 软件大小:37.97M 软件语言:中文 软件类型:国产软件 软件类别:免费软件 / 主页浏览 更新时间:2024-11-17 20:08:48 运行环境:WinXP, Win7, Win8, Win10 软件等级: 软件厂商: 官方网站:http://www.hxyzn.cn/ 本地下载文件大小:54.14M高速下载需优先下载高速下载器 顶...http://www.hxyzn.cn/Bii/detail/lzytIKuDcp/