如何使用GreenDao的MyDaoGenerator建立GreenDao数据库框架?

  1. GreenDao的两种创建数据库框架方法
    (1)添加GreenDao依赖包和插件,建立实体类,如userBean,点击菜单栏的【build】键中的【make peoject】自动生成三个GreenDao文件,即DaoMaster,DaoSession,userBeanDao.
    (2)用MyDaoGenerator创建数据库框架,这也是我下面详细说明的方法,这是GreenDao的旧版生成器(旧版生成器官方文档链接)。在大多数情况下,我们建议使用新的Gradle插件,即方法(1),但是目前只有MyDaoGenerator支持某些高级功能,例如多模式(schemas)。我们使用多模式来创建数据表非常方便,尤其在项目中使用这种方式来建立GreenDao框架,使的开发人员使用GreenDao建表的学习成本非常低,可以说看一眼就会建表了,自动生成beans和3个DAO文件,不信你往下看。用MyDaoGenerator构建GreenDao的缺点就是,这个版本已经至少3年没更新了,不过不影响使用,我们项目中就是使用这种方法构建GreenDao框架的。

  2. 用MyDaoGenerator构建GreenDao框架
    (1)创建DAO文件的生成路径
    在【project】视图下的./app/src/main/路径下新建一个名为【java-gen】的java型文件夹,注意!!!一定不能随便建一个任意类型的文件夹,否则后面会出错,我就被坑了!
    【step1:】
    第一步:

【step2:】
第二步:
创建【java-gen】文件夹成功后,打开app下的build.gradle你会发现多了一行代码,如下图所示
在这里插入图片描述
这句话的意思是把【java-gen】下的.java文件也include到src路径中。我们继续在app/build.gradle的dependencies中添加GreenDao依赖库,即:implementation ‘de.greenrobot:greendao:1.3.7’,添加后如下图所示:
在这里插入图片描述
(2)下载并配置GreenDao的框架生成器


step1:


[]
下载链接,下载完解压,找到MyDaoGenerator文件夹,把它复制到到你的项目的根目录下,跟【app】平级,如下图所示:,压缩包中的其他文件都不需要。
在这里插入图片描述

step2:

把MyDaoGenerator配置到项目中,打开根目录下的【settings.gradle】,并查看编辑窗体最右侧的【Gradle】你会发现当前工程中只存在【app】这个应用程序,如下图:
在这里插入图片描述
我们需要把【MyDaoGenerator】也添加到到工程中,即:

include ':app',':MyDaoGenerator'

添加完后,点击sync同步,就报错了,报错如下:
在这里插入图片描述
错误提示输出路径错误,点击蓝色字体【Open File】,进入到MyDaoGenerator文件下的【build.gradle】,把路径改为我们之前建好的路径,还记得【java-gen】吗?没错就是它,之所以要改成src/main/java-gen,当然是方便我们调用数据库啦。

 mainClassName = "pl.surecase.eu.MyDaoGenerator"
    // edit output direction
   // outputDir = "../DaoExample/src/main/java-gen"
    outputDir = "../app/src/main/java-gen"

改完后点sync发现还报相同的错误,加一个【def】设置为默认路径就好了,再sync一下,就不会再报错了。

    mainClassName = "pl.surecase.eu.MyDaoGenerator"
    // edit output direction
   // outputDir = "../DaoExample/src/main/java-gen"
    //设置为默认路径
    def outputDir = "../app/src/main/java-gen"

到这为止,我们的GreenDao框架算是配置完了,你可以点开窗体最右侧的Gradle看一下,发现MyDaoGenerator已经include到工程中了。
在这里插入图片描述

step3:

打开MyDaoGenerator,如下图
在这里插入图片描述
修改里面的代码,建一个user表和一个book表:

package pl.surecase.eu;

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;

/**
 *
 */
public class MyDaoGenerator {

    public static void main(String args[]) throws Exception {
        //初始化数据库
        //第一个参数是数据库版本号,第二个参数是为你生成的bean类所放的文件夹名
        Schema schema = new Schema(1, "beans");
        //设置生成的三个java文件的目录
        schema.setDefaultJavaPackageDao("daos");
        initUserBean(schema);
        initBookBean(schema);
        //第二个参数是输出路径,由于已经在MyDaoGrenerator中的build.gradle中配置过了,所以这里不再配置,
        new DaoGenerator().generateAll(schema, args[0]);
        //配置也可以
        //new DaoGenerator().generateAll(schema, "../app/src/main/java-gen");
    }

    /**
     * 建User表
     * @param schema
     */
    private static void initUserBean(Schema schema){
        Entity entity=schema.addEntity("UserBean");
        //添加id字段,设置为主键,自增长
        entity.addIdProperty().primaryKey().autoincrement();
        entity.addStringProperty("name");
        entity.addIntProperty("age");
        entity.addStringProperty("sex");
        entity.addStringProperty("tel");
    }


    /**
     * 建book表
     * @param schema
     */
    private static void initBookBean(Schema schema){
        Entity entity=schema.addEntity("BookBean");
        entity.addIdProperty().primaryKey().autoincrement();
        entity.addStringProperty("author");
        entity.addStringProperty(" publisher");
        entity.addDoubleProperty("price");
        entity.addBooleanProperty("lended");
        entity.addDateProperty("lendDate");
        entity.addDateProperty("returnDate");

    }

}

点击【run】自动生成been和dao。
在这里插入图片描述
运次成功后打开我们之间建的【java-gen】,你会发现beans和daos两个文件夹已经自动生成我们所需的文件。如下图:
在这里插入图片描述

以后再需要建表,就直接在Mygenerator中写建表方法,run一下就行,配置什么都不用管了是不是很简单。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GreenDao是一个高效、轻量级、快速的ORM(对象关系映射)框架,可以方便地将Java对象映射到SQLite数据库中。下面是GreenDao的引入和使用步骤: 1. 在build.gradle文件中添加以下依赖: ```groovy dependencies { implementation 'org.greenrobot:greendao:3.3.0' } ``` 2. 在app/build.gradle文件中添加以下配置: ```groovy android { defaultConfig { //... javaCompileOptions { annotationProcessorOptions { arguments = ["schemaVersion": "1", "daoPackage": "com.example.myapp.db"] } } } } greendao { schemaVersion 1 daoPackage 'com.example.myapp.db' targetGenDir 'src/main/java' } ``` 这些配置将告诉GreenDao在编译时生成DAO(数据访问对象)类。schemaVersion是数据库的版本号,daoPackage是生成DAO类的包名,targetGenDir是DAO类的生成目录。 3. 创建实体类,例如: ```java @Entity public class User { @Id(autoincrement = true) private Long id; private String name; private int age; // getters and setters } ``` @Entity注解表示这是一个实体类,@Id注解表示这是主键,autoincrement = true表示主键自增。 4. 在app/src/main/java目录下创建一个名为“greenDao”的包,并在该包下创建一个名为“DaoMasterOpenHelper”的类。该类继承自DaoMaster.OpenHelper,用于创建和升级数据库。例如: ```java public class DaoMasterOpenHelper extends DaoMaster.OpenHelper { public DaoMasterOpenHelper(Context context, String name) { super(context, name); } @Override public void onCreate(Database db) { super.onCreate(db); } @Override public void onUpgrade(Database db, int oldVersion, int newVersion) { // 数据库升级逻辑 } } ``` 5. 初始化GreenDao,在Application类的onCreate()方法中添加以下代码: ```java public class MyApp extends Application { private DaoSession daoSession; @Override public void onCreate() { super.onCreate(); DaoMasterOpenHelper helper = new DaoMasterOpenHelper(this, "mydb"); Database db = helper.getWritableDb(); daoSession = new DaoMaster(db).newSession(); } public DaoSession getDaoSession() { return daoSession; } } ``` 这里创建了一个DaoMasterOpenHelper实例,并通过它获取可写的数据库,然后创建一个DaoSession实例。 6. 使用GreenDao,例如: ```java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DaoSession daoSession = ((MyApp) getApplication()).getDaoSession(); User user = new User(); user.setName("Tom"); user.setAge(18); daoSession.getUserDao().insert(user); List<User> userList = daoSession.getUserDao().queryBuilder() .where(UserDao.Properties.Age.gt(10)) .orderAsc(UserDao.Properties.Age) .list(); } } ``` 这里通过getApplication()方法获取MyApp实例,然后通过getDaoSession()方法获取DaoSession实例。接着创建了一个User实例并插入到数据库中。最后使用查询构建器查询年龄大于10的所有用户,并按年龄升序排序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值