依赖
appbuilder
apply plugin: 'org.greenrobot.greendao'
greendao {
schemaVersion 1
daoPackage 'com.baway.alex.greendaodemo.data.database'
targetGenDir 'src/main/java'
}
implementation 'org.greenrobot:greendao:3.2.2'
builder
mavenCentral()
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
User
@Entity
public class User {
@Id(autoincrement = true)
Long id;
String name;
@Property
int age;
App
public class App extends Application {
private DaoMaster daoMaster;
private DaoSession daoSession;
private static App app;
@Override
public void onCreate() {
super.onCreate();
app = App.this;
//第一个参数:上下文
//第二个参数:数据库名称
//第三个参数:游标工厂类
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "baway", null);
SQLiteDatabase db = helper.getWritableDatabase();
//获取GreenDao顶层管理对象
daoMaster = new DaoMaster(db);
//通过DaoMaster获取DaoSession
daoSession = daoMaster.newSession();
}
public static App getInstance() {
//DCL双重检测锁
if (null == app) {
synchronized (App.class) {
if (null == app) {
app = new App();
}
}
}
return app;
}
public DaoSession getDaoSession() {
return daoSession;
}
}
main
@Override
public void onClick(View v) {
UserDao userDao = App.getInstance().getDaoSession().getUserDao();
switch (v.getId()) {
case R.id.btn_add:
//插入数据库中
for (int i = 0; i < 5; i++) {
User user = new User();
user.setName("司马" + i);
userDao.insert(user);
}
break;
case R.id.btn_delete:
break;
case R.id.btn_update:
break;
case R.id.btn_query:
//定义变量
StringBuilder sb = new StringBuilder();
//查询到的数据
List<User> userList = userDao.loadAll();
for (int i = 0; i < userList.size(); i++) {
User user = userList.get(i);
sb.append(user.getName() + "...");
}
tv_showData.setText(sb.toString());
break;
}
}
Alex
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Alex {
public String name() default "剪刀手刘德华";
public int age() default 18;
}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
//1、获取类类型
Class clazz = Class.forName(" com.baway.alex.annotationdemo2.UserBean");
//2、获取方法中注解
Method method = clazz.getMethod("getName", null);
boolean present = method.isAnnotationPresent(Alex.class);
if (present) {
//3、获取注解中的name,定义的部分
Alex annotation = method.getAnnotation(Alex.class);
String name = annotation.name();
//打印日志
Toast.makeText(this, name, Toast.LENGTH_SHORT).show();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}