1、java工程 libs下需要的jar包 freemarker-2.3.10.jar 和greendao-generator-1.3.1.jar
1-1、java项目代码
package com.dqb.greendao;
import java.io.IOException;
import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;
public class MyTest
{
public static void main(String[] args)
{
/**
* 1是版本号,后面的包名是android项目中必须有的包名,等生成的java文件之后,
*
* 可以把这个整个拷去Android中
*
*/
String defaultJavaPackage = "com.dqb.greendao.model";
Schema schema = new Schema(1, defaultJavaPackage);
addPerson(schema);
addPerson2(schema);
addPerson3(schema);
try
{
/**
* 生成java文件-->> ..是当前路径;GreenDaoSimpleDemo_JAVA是项目名,src是java文件目录
* 再拼接刚刚的包名,就会在那个包下生成java文件,运行之后,记得刷新,第一次没有刷新,所以一直看不到
*/
new DaoGenerator().generateAll(schema, "../MyJavaGreenDAO/src/");
} catch (IOException e)
{
e.printStackTrace();
} catch (Exception e)
{
e.printStackTrace();
}
}
private static void addPerson(Schema schema)
{
/** 一个Entity就是一张表的关系映射 Person既是表名又是类名 */
Entity entity = schema.addEntity("Person");
/** 增加属性(表字域) */
entity.addIdProperty().autoincrement();
entity.addStringProperty("name").notNull();
entity.addStringProperty("sex");
entity.addIntProperty("age");
}
private static void addPerson2(Schema schema)
{
/** 一个Entity就是一张表的关系映射 Person既是表名又是类名 */
Entity entity = schema.addEntity("Person2");
/** 增加属性(表字域) */
entity.addIdProperty().autoincrement();
entity.addStringProperty("name").notNull();
entity.addStringProperty("sex");
entity.addIntProperty("age");
}
private static void addPerson3(Schema schema)
{
/** 一个Entity就是一张表的关系映射 Person既是表名又是类名 */
Entity entity = schema.addEntity("Person3");
/** 增加属性(表字域) */
entity.addIdProperty().autoincrement();
entity.addStringProperty("name").notNull();
entity.addStringProperty("sex");
entity.addIntProperty("age");
}
}
刷新项目 生成的文件:在com.dqb.greendao.model 包下 ,拷贝到android项目下。包名最好一致
2、android项目
2-1 数据库操作类 GreenDaoUtil
package com.example.myandroidgreendao.model.util;
import java.util.List;
import com.example.myandroidgreendao.model.DaoMaster;
import com.example.myandroidgreendao.model.DaoMaster.OpenHelper;
import com.example.myandroidgreendao.model.DaoSession;
import com.example.myandroidgreendao.model.Person;
import com.example.myandroidgreendao.model.PersonDao;
import com.example.myandroidgreendao.model.PersonDao.Properties;
import de.greenrobot.dao.query.QueryBuilder;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
public class GreenDaoUtil
{
Context context;
DaoMaster daoMaster;
DaoSession daoSession;
public GreenDaoUtil(Context context)
{
this.context = context;
OpenHelper help = new DaoMaster.DevOpenHelper(context, "Person", null);
SQLiteDatabase db = help.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
}
// 增加
public void insertIntoPerson(Person person)
{
daoSession.insertOrReplace(person);
}
// 删除
public void deletePersion(long key)
{
PersonDao personDao = daoSession.getPersonDao();
personDao.deleteByKey(key);
}
// 更新
public void updatePerson(Person person, long key, String name)
{
person.setId(key);
person.setName(name);
daoSession.update(person);
}
// 按照name查找
public List<Person> queryByName(String name)
{
QueryBuilder<Person> query = daoSession.queryBuilder(Person.class);
List<Person> queryByName = query.where(Properties.Name.eq(name)).list();
return queryByName;
}
// 查找所有
public List<Person> queryAll()
{
QueryBuilder<Person> query = daoSession.queryBuilder(Person.class);
List<Person> all = query.list();
return all;
}
}
2-2 MainActivity
package com.example.myandroidgreendao;
import java.util.List;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import com.example.myandroidgreendao.model.Person;
import com.example.myandroidgreendao.model.util.GreenDaoUtil;
public class MainActivity extends ActionBarActivity
{
GreenDaoUtil greenDaoUtil;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
greenDaoUtil = new GreenDaoUtil(this);
Button btn_add = (Button) findViewById(R.id.btn_add);
Button btn_delete = (Button) findViewById(R.id.btn_delete);
Button btn_update = (Button) findViewById(R.id.btn_update);
Button btn_query_by_name = (Button) findViewById(R.id.btn_query_by_name);
Button btn_query_all = (Button) findViewById(R.id.btn_query_all);
final Person p = new Person(null, "tom", "female", 46);
final Person p2 = new Person(null, "tom2", "female", 46);
btn_add.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
greenDaoUtil.insertIntoPerson(p);
greenDaoUtil.insertIntoPerson(p2);
System.out.println("插入成功");
}
});
btn_delete.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
greenDaoUtil.deletePersion(1l);
System.out.println("删除成功");
}
});
btn_update.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
greenDaoUtil.updatePerson(p, 1l, "update-name");
System.out.println("更新成功");
}
});
btn_query_by_name.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
List<Person> plist = greenDaoUtil.queryByName("tom");
for (int i = 0; i < plist.size(); i++)
{
String name = plist.get(i).getName() + "";
System.out.println("查找的name==" + name == (null) ? "null" : name);
}
}
});
btn_query_all.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
StringBuffer sb = new StringBuffer();
List<Person> allPersonList = greenDaoUtil.queryAll();
for (int i = 0; i < allPersonList.size(); i++)
{
long id = allPersonList.get(i).getId();
String name = allPersonList.get(i).getName();
int age = allPersonList.get(i).getAge();
String sex = allPersonList.get(i).getSex();
sb.append("id==" + id).append(",name=" + name).append(",age=" + age).append(",sex=" + sex).append("\n");
}
System.out.println(sb.toString());
}
});
}
}
2-3
讲java代码生成的类放入Android目录下