package com.yuzhi.fine.db.dao;
import android.content.Context;
import com.j256.ormlite.dao.Dao;
import com.yuzhi.fine.db.DatabaseHelper;
import com.yuzhi.fine.db.entity.Article;
import com.yuzhi.fine.db.entity.User;
import java.sql.SQLException;
import java.util.List;
public class ArticleDao
{
private Dao<Article, Integer> articleDaoOpe;
private DatabaseHelper helper;
@SuppressWarnings("unchecked")
public ArticleDao(Context context)
{
try
{
helper = DatabaseHelper.getHelper(context);
articleDaoOpe = helper.getDao(Article.class);
} catch (SQLException e)
{
e.printStackTrace();
}
}
/**
* 添加一个Article
*
* @param article
*/
public void add(Article article)
{
try
{
articleDaoOpe.create(article);
} catch (SQLException e)
{
e.printStackTrace();
}
}
/**
* 通过Id得到一个Article
*
* @param id
* @return
*/
@SuppressWarnings("unchecked")
public Article getArticleWithUser(int id)
{
Article article = null;
try
{
article = articleDaoOpe.queryForId(id);
helper.getDao(User.class).refresh(article.getUser());
} catch (SQLException e)
{
e.printStackTrace();
}
return article;
}
/**
* 通过Id得到一篇文章
*
* @param id
* @return
*/
public Article get(int id)
{
Article article = null;
try
{
article = articleDaoOpe.queryForId(id);
} catch (SQLException e)
{
e.printStackTrace();
}
return article;
}
/**
* 通过UserId获取所有的文章
*
* @param userId
* @return
*/
public List<Article> listByUserId(int userId)
{
try
{
/*QueryBuilder<Article, Integer> articleBuilder = articleDaoOpe
.queryBuilder();
QueryBuilder userBuilder = helper.getDao(User.class).queryBuilder();
articleBuilder.join(userBuilder);
Where<Article, Integer> where = queryBuilder.where();
where.eq("user_id", 1);
where.and();
where.eq("name", "xxx");
// 或者
articleDaoOpe.queryBuilder().//
where().//
eq("user_id", 1).and().//
eq("name", "xxx");
//
articleDaoOpe.updateBuilder().updateColumnValue("name","zzz").where().eq("user_id", 1);
where.or(
//
where.and(//
where.eq("user_id", 1), where.eq("name", "xxx")),
where.and(//
where.eq("user_id", 2), where.eq("name", "yyy")));*/
return articleDaoOpe.queryBuilder().where().eq("user_id", userId)
.query();
} catch (SQLException e)
{
e.printStackTrace();
}
return null;
}
}