1.工具类
/**
* Created by sail on 16/6/2.
*/
public class DataBaseHelper extends OrmLiteSqliteOpenHelper{
private static final String TAG = "DataBaseHelper";
private static final String TABLE_NAME = "ontomany.db";
private static final int DATABASE_VERSION = 1;
private static DataBaseHelper instance;
private Dao<User,Integer> userDao;
private Dao<Dept,Integer> deptDao;
public DataBaseHelper(Context context) {
super(context, TABLE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
Log.d(TAG, "onCreate: ");
try {
TableUtils.createTable(connectionSource,User.class);
TableUtils.createTable(connectionSource,Dept.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {
}
public static DataBaseHelper getInstance(Context context){
if(null == instance){
instance = new DataBaseHelper(context);
}
return instance;
}
public Dao<User,Integer> getUserDao(){
if(null == userDao){
try {
userDao = getDao(User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
return userDao;
}
public Dao<Dept,Integer> getDeptDao(){
if(null == deptDao){
try {
deptDao = getDao(Dept.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
return deptDao;
}
}
部门工具类
public class DeptDao {
private Dao<Dept, Integer> deptDaoHelper;
private DataBaseHelper dataBaseHelper;
public DeptDao(Context context) {
dataBaseHelper = DataBaseHelper.getInstance(context);
deptDaoHelper = dataBaseHelper.getDeptDao();
}
/**
* 保存所有
*/
public void saveAll(List<Dept> depts) {
for (Dept dept : depts
) {
addDept(dept);
}
}
public void addDept(Dept dept) {
try {
deptDaoHelper.createOrUpdate(dept);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void delete(int depetId){
try {
deptDaoHelper.deleteById(depetId);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void deleteObject(Dept dept){
try {
deptDaoHelper.delete(dept);
} catch (SQLException e) {
e.printStackTrace();
}
}
public List<Dept> loadAllByTag(int deptId) {
List<Dept> postLists = new ArrayList<>();
try {
QueryBuilder<Dept, Integer> builder = deptDaoHelper
.queryBuilder();
builder.where().eq("deptId", deptId);
postLists = builder.query();
} catch (SQLException e) {
e.printStackTrace();
}
return postLists;
}
public Dept getDept(int deptId){
Dept d = null;
try {
d = deptDaoHelper.queryForId(deptId);
} catch (SQLException e) {
e.printStackTrace();
}
return d;
}
}
职工工具类:
public class UserDao {
private Dao<User,Integer> userDaoHelper;
private DataBaseHelper dataBaseHelper;
public UserDao(Context context) {
dataBaseHelper = DataBaseHelper.getInstance(context);
userDaoHelper = dataBaseHelper.getUserDao();
}
/**
* 保存所有
*/
public void saveAll(List<User> users){
for (User user: users
) {
addUser(user);
}
}
public void addUser(User user){
try {
userDaoHelper.createOrUpdate(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
部门实体:
public class Dept {
@DatabaseField(id = true)
private int deptId;
@DatabaseField(columnName = "deptName")
private String deptName;
@ForeignCollectionField(eager = true)
private Collection<User> users;
public Dept(){
}
public Dept(int deptId, String deptName) {
this.deptId = deptId;
this.deptName = deptName;
}
public int getDeptId() {
return deptId;
}
public void setDeptId(int deptId) {
this.deptId = deptId;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public Collection<User> getUsers() {
return users;
}
public void setUsers(Collection<User> users) {
this.users = users;
}
@Override
public String toString() {
String result = "deptId=="+deptId+"=deptName="+deptName
+"=users="+users.toString();
return result;
}
}
职工实体:
public class User {
@DatabaseField(id = true)
private int userId;
//用户名
@DatabaseField(columnName = "userName")
private String userName;
@DatabaseField(columnName = "age")
private int age;
@DatabaseField(columnName = "create_time",format = "DATE_STRING")
private Date date;
@DatabaseField(foreign=true,foreignAutoRefresh=true,foreignAutoCreate = true)
private Dept dept;
public User() {
}
public User(String userName, int userId, int age) {
this.userName = userName;
this.userId = userId;
this.age = age;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
String result = "userId="+userId+
"=userName="+userName+"=age="+age;
return result;
}
}
Activity:
public class MainActivity extends AppCompatActivity {
DeptDao deptDao;
UserDao userDao;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
deptDao = new DeptDao(this);
userDao = new UserDao(this);
User user = new User();
user.setUserId(2);
user.setUserName("11111");
User user1 = new User();
user1.setUserId(4);
user1.setUserName("12222");
Dept dept = new Dept();
dept.setDeptName("ceshi");
dept.setDeptId(40);
//要先将部门实体加入数据库,然后user再调用setDept
deptDao.addDept(dept);
user.setDept(dept);
userDao.addUser(user);
user1.setDept(dept);
userDao.addUser(user1);
//获取的就是关联的数据,有Dept数据,也有User数据,User数据一般为List
Dept dept1 = deptDao.getDept(40);
Log.d(TAG, "onCreate: "+dept1.toString()+"--"+dept1.getUsers().size());
for (User we:dept1.getUsers()
) {
Log.d(TAG, "onCreate: we=="+we.toString());
}
//删除的时候不能关联删除,这样只删除了dept,没有删除关联的user
deptDao.deleteObject(dept);
}
}