解决android greenDAO没有默认值default value和没有原始数据类型的问题

大多数android应用开发攻城狮们对greenDAO的威名都有听过,高效,使得它在众多的orm工具中脱颖而出

最近有项目对sqlite效率有要求,所以相当了它,但是中间遇到了如题所述的两个问题

1.在greenDAO generator项目中没有相应的API能设置默认值(default value),例如:

entity.addIntProperty("test").defValue("7");

2.greenDAO generator所产生的java实体类和dao类中使用的都是引用数据类型,如:int ->Integer,long->Long等等,使用这个就有个问题,调用者塞入Integer,那就是是null的风险.

查了资料,google之,发现greenDAO不屑于实现两个功能,没办法,浪费了半晌的时间自己修改了源码,打个jar包自己的项目用了,分享之

主要修改了DAOgenerator项目里的Property.java,entity.ftl,dao.ftl这三个文件.

修改后,就可以这样使用:

    //test
    private static void addNote(Schema schema) {
        Entity note = schema.addEntity("Note");
        note.addIdProperty();
        note.addStringProperty("text").notNull().defValue("\"y\"");
        note.addStringProperty("comment");
        note.addStringProperty("test");
        note.addIntProperty("test3").primJavaType().defValue("7");
        note.addIntProperty("test4");
        note.addDateProperty("date");
    }

打好的jar,还没上传,谁有需要留下邮箱,我传给他.

时间: 2024-08-25 19:53:36

解决android greenDAO没有默认值default value和没有原始数据类型的问题的相关文章

利用 POCO 解决 Entity Framework 的默认值 (Default Value) 写入问题 v4

利用 POCO 解决 Entity Framework 的默认值 (Default Value) 写入问题 经过 6 小时的实践和验证后,原本文章 po 出来的作法,只有在小弟特定的项目和 UT? 才可以执行?? ( 原因尚不明 ) 小弟重新建置相同的程序和数据库后却无法重现同样的效果. 另外,虽然 很多文章在反应是 CSDL 有更新,但 SSDL 没有更新是 Bug . 但小弟导入 StoreGeneratedPattern = Computed 后,发现若是 SSDL 也改成 Compute

Android系统中默认值的意义列表

转自:http://blog.csdn.net/yabg_zhi_xiang/article/details/51727844 在SettingsProvider中设置系统中默认值,我们可以在frameworks\base\packages\SettingsProvider\res\values\default.xml文件中看到常用的一些默认值,这次我就来详细解释下这里面默认的意义.当然,这不是全部的默认值,全部默认值得定义要在frameworks\base\core\java\android\

解决:mysql timestamp默认值0000-00-00 00:00:00 报错

一. 问题的引出 我们在用mysql5.7创建表时,如果把timestamp(时间戳)的默认值设置为0000-00-00 00:00:00 的形式,将会产生一条报错: `RepaymentDate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '回款日期', 报错信息如下: [Err] 1067 - Invalid default value for 'RepaymentDate' 二. 找出原因 这个问题和mysql中sql

解决mvc下dropdownlistfor默认值设置

http://my.oschina.net/kavensu/blog/307376 关键点在于ViewBag.XX不能与字段名同名.否则无法设置默认值.应该是因为冲突. 例如: @Html.DropDownListFor(model => model.dept_id, ViewBag.depts as IEnumerable<SelectListItem>,string.Empty, new { style = "width:180px" }) 不能写成: @Html

MySQL5.0+提示字段没有默认值(doesn’t have a default value)的解决方法

方法一: 打开my.ini,查找 sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION” 修改为 sql-mode=”NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION” 然后重启MYSQL . 方法二: MySQL 5 uses a strict mode which needs to be disabled. In Windows, Goto Start–>Progr

Android修改Eclipse 中的Default debug keystore路径,以及修改android的AVD默认路径

初学android,光是配置Eclipse就走了不少弯路,班里面有很多同学的计算 机名都是写的自己的中文姓名,结果导致了AVD文件默认保存在“C:\user\<username>\.andorid”下,这下可就坏 了!!android的sdk模拟器是不支持中文的,它会将中文目录翻译成一串我们不认识的文字,这就是所谓的编码问题!!哎!什么时候才能让这些“很 牛”的程序自动支持到中文啊???!!!(估计我是赶不上了....).不费话了,下面给大家介绍一下如何解决这个问题: 打开系统属性-->

Android中如何修改编译的资源ID值(默认值是0x7F...可以随意改成0x02~0x7E)

一.技术准备 今天我们来看一下如何修改Android中编译时的资源Id的值,在讲解这内容之前,我们需要先了解一下Android中的资源编译之后的结构和编译过程,这里就不多说了,具体可以查看这篇文章: http://blog.csdn.net/jiangwei0910410003/article/details/50628894 这篇文章中,介绍了如何解析Android中编译之后的resource.arsc文件,这里就介绍了Android中资源文件编译之后的类型和格式,其实Android中资源编译

Android 在frameworks中修改Setting中的默认值

在frameworks中跟Setting默认值相关的几个文件 /frameworks/base/packages/SettingsProvider/res/values/defaults.xml /frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 在defaults.xml文件中定义了相关的值,DatabaseHelper.java会把相应的值读取出来保

为列增加默认值限制(Adding a default constraint)

我们可以为表中的某一列增加一个默认值,如上文中我们创建了tblPerson表,该表有GenderId列.我们可以使用下面的代码为该列增加默认值: Alter Table tblPerson Add Constraint DF_tblPerson_GenderId Default 3 For GenderId 同时我们也可以在为表增加新列的时候指定默认值,下面的代码为tblPerson增加一个地址列Address,同时为该地址指定了默认值"CHONGQING": Alter Table