//全布局的依赖
buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1' } }App里的依赖
要先在顶上加
apply plugin: 'org.greenrobot.greendao'
然后加依赖
dependencies { 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.2.0' }
User类Bean类的书写要特别注意
@Entity public class User { @Id(autoincrement = true) private long id; private String name; @Generated(hash = 1144922831) public User(long id, String name) { this.id = id; this.name = name; } @Generated(hash = 586692638) public User() { } public long getId() { return this.id; } public void setId(long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } }
MainActivity实现
public class MainActivity extends AppCompatActivity { UserDao userDao; private EditText etId; private EditText etName; private Button btnAdd; private Button btnDelete; private Button btnQuery; private TextView tvQuery; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initDbHelp(); /*新增一条数据*/ btnAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String id = etId.getText().toString(); String name = etName.getText().toString(); if (isNotEmpty(id) && isNotEmpty(name)) { QueryBuilder qb = userDao.queryBuilder(); ArrayListlist = (ArrayList ) qb.where(UserDao.Properties.Id.eq(id)).list(); if (list.size() > 0) { Toast.makeText(MainActivity.this, "主键重复", Toast.LENGTH_SHORT).show(); } else { userDao.insert(new User(Long.valueOf(id), name)); Toast.makeText(MainActivity.this, "插入数据成功", Toast.LENGTH_SHORT).show(); } } else { if (isEmpty(id) && isNotEmpty(name)) { Toast.makeText(MainActivity.this, "id为空", Toast.LENGTH_SHORT).show(); } if (isEmpty(name) && isNotEmpty(id)) { Toast.makeText(MainActivity.this, "姓名为空", Toast.LENGTH_SHORT).show(); } if (isEmpty(id) && isEmpty(name)) { Toast.makeText(MainActivity.this, "请填写信息", Toast.LENGTH_SHORT).show(); } } etId.setText(""); etName.setText(""); } }); /*删除指定数据*/ btnDelete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String id = etId.getText().toString(); if (isNotEmpty(id)) { userDao.deleteByKey(Long.valueOf(id)); QueryBuilder qb = userDao.queryBuilder(); ArrayList list = (ArrayList ) qb.where(UserDao.Properties.Id.eq(id)).list(); if (list.size() < 1) { Toast.makeText(MainActivity.this, "删除数据成功", Toast.LENGTH_SHORT).show(); etId.setText(""); etName.setText(""); } } else { Toast.makeText(MainActivity.this, "id为空", Toast.LENGTH_SHORT).show(); } } }); /*查询数据*/ btnQuery.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String id = etId.getText().toString(); if (isNotEmpty(id)) { QueryBuilder qb = userDao.queryBuilder(); ArrayList list = (ArrayList ) qb.where(UserDao.Properties.Id.eq(id)).list(); if (list.size() > 0) { String text = ""; for (User user : list) { text = text + "\r\n" + user.getName(); } tvQuery.setText(text); } else { tvQuery.setText(""); Toast.makeText(MainActivity.this, "不存在该数据", Toast.LENGTH_SHORT).show(); } etId.setText(""); etName.setText(""); } else { Toast.makeText(MainActivity.this, "id为空", Toast.LENGTH_SHORT).show(); } } }); } /*初始化数据库相关*/ private void initDbHelp() { DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "recluse-db", null); SQLiteDatabase db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); DaoSession daoSession = daoMaster.newSession(); userDao = daoSession.getUserDao(); } private void initView() { etId = (EditText) findViewById(R.id.etId); etName = (EditText) findViewById(R.id.etName); btnAdd = (Button) findViewById(R.id.btnAdd); btnDelete = (Button) findViewById(R.id.btnDelete); btnQuery = (Button) findViewById(R.id.btnQuery); tvQuery = (TextView) findViewById(R.id.tvQuery); } private boolean isNotEmpty(String s) { if (s != null && !s.equals("") || s.length() > 0) { return true; } else { return false; } } private boolean isEmpty(String s) { if (isNotEmpty(s)) { return false; } else { return true; } } }
布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="10dp" android:text="greenDao lib test" android:textColor="@android:color/black" /> <EditText android:id="@+id/etId" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入用户id" android:inputType="number" android:textSize="15sp" /> <EditText android:id="@+id/etName" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入用户名" android:textSize="15sp" /> <Button android:id="@+id/btnAdd" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="新增" /> <Button android:id="@+id/btnDelete" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="删除" /> <Button android:id="@+id/btnQuery" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查询" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="10dp" android:text="查询结果" android:textColor="@android:color/black" /> <TextView android:id="@+id/tvQuery" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="10dp" android:textColor="@android:color/black" /> LinearLayout>