实现数据库功能(GreenDao+butterknife)

第一步:在根目录的project里加入标记红色的依赖

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

第二步:在创建的项目的build.gradle下添加标记红色的依赖,绿色为butterknife的依赖

apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'(在头部添加)

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile 'org.greenrobot:greendao:3.1.0'
    compile 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}
greendao {
    schemaVersion 1
    daoPackage 'chendemin.bwei.com.myapplication.gen'
    targetGenDir 'src/main/java'
}

//添加bean类,会生成一个gen包,里边有三个类(DaoMaster,DaoSession,PersonDao)

@Entity
public class Person {
    @Id
    private Long id;

    private String name;

    private int age;

    public int getAge() {
        return this.age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Generated(hash = 1145075130)
    public Person(Long id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    @Generated(hash = 1024547259)
    public Person() {
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
//主mainactivity(有两种实现方法,封装以及不封装,注释掉的为不封装的)

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.txt_show)
    TextView txtShow;
    private PersonDao dao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
//        // 初始化数据库的一些配置
//        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "user", null);
//        // 获取数据库操作对象
//        SQLiteDatabase database = helper.getWritableDatabase();
//        //获取DaoMaster对象
//        DaoMaster daoMaster = new DaoMaster(database);
//        // 获取DaoSession对象
//        DaoSession session = daoMaster.newSession();
//        // 拿到要操作的对象
//        dao = session.getPersonDao();
        dao = DbHelper.getInstance(this).getPersonDao();
    }

    @OnClick({R.id.btn_insert, R.id.btn_delete, R.id.btn_updata, R.id.btn_query})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.btn_insert:
                Person person1 = new Person();
                person1.setName("zhansgan");
                person1.setAge(12);
                long insert = dao.insert(person1);
                Log.i("CDM", "插入了: " + insert);
                break;
            case R.id.btn_delete:
                Person person2 = new Person();
                person2.setId(2L);
                dao.delete(person2);
                break;
            case R.id.btn_updata:
                Person person3 = new Person(4L,"Lisi",27);
                dao.update(person3);
                break;
            case R.id.btn_query:
                List<Person> list = dao.loadAll();
                String Username="";
                for (int i=0;i<list.size();i++) {
                    Username += list.get(i).getName() + ",";
                }
                Log.i("CDM", Username.toString());
                break;
        }
    }
}
//封装的工具类
public class DbHelper {
    private static volatile DbHelper instance;
    private final DaoSession session;

    private DbHelper(Context context) {
        // 初始化数据库的一些配置
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "user", null);
        // 获取数据库操作对象
        SQLiteDatabase database = helper.getWritableDatabase();
        //获取DaoMaster对象
        DaoMaster daoMaster = new DaoMaster(database);
        // 获取DaoSession对象
        session = daoMaster.newSession();
        // 拿到要操作的对象
    }
    public static DbHelper getInstance(Context context) {
        if (instance == null) {
            synchronized (DbHelper.class) {
                if (null == instance) {
                    instance = new DbHelper(context);
                }
            }
        }
        return  instance;
    }
    public PersonDao getPersonDao() {
        return session.getPersonDao();
    }
}
//主布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/txt_show"
        android:layout_width="match_parent"
        android:gravity="center"
        android:layout_height="wrap_content"
        android:text="数据库" />
    <Button
        android:id="@+id/btn_insert"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="添加数据库"/>
    <Button
        android:id="@+id/btn_delete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除数据库"/>
    <Button
        android:id="@+id/btn_updata"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="改数据库"/>
    <Button
        android:id="@+id/btn_query"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询数据库"/>

</LinearLayout>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值