|
package com.ekexiu.portal.dao;
import com.ekexiu.portal.po.Article;
import com.ekexiu.portal.po.ArticleProduct;
import com.ekexiu.portal.po.ArticleWare;
import com.ekexiu.portal.pojo.FindInfo;
import com.ekexiu.portal.pojo.SelfArticle;
import org.jfw.apt.annotation.DefaultValue;
import org.jfw.apt.annotation.Nullable;
import org.jfw.apt.orm.annotation.dao.Column;
import org.jfw.apt.orm.annotation.dao.DAO;
import org.jfw.apt.orm.annotation.dao.Dynamic;
import org.jfw.apt.orm.annotation.dao.method.Exclude;
import org.jfw.apt.orm.annotation.dao.method.From;
import org.jfw.apt.orm.annotation.dao.method.LimitColumn;
import org.jfw.apt.orm.annotation.dao.method.OrderBy;
import org.jfw.apt.orm.annotation.dao.method.SetSentence;
import org.jfw.apt.orm.annotation.dao.method.Where;
import org.jfw.apt.orm.annotation.dao.method.operator.DeleteWith;
import org.jfw.apt.orm.annotation.dao.method.operator.Insert;
import org.jfw.apt.orm.annotation.dao.method.operator.LimitQuery;
import org.jfw.apt.orm.annotation.dao.method.operator.LimitSelect;
import org.jfw.apt.orm.annotation.dao.method.operator.PageQuery;
import org.jfw.apt.orm.annotation.dao.method.operator.PageSelect;
import org.jfw.apt.orm.annotation.dao.method.operator.QueryVal;
import org.jfw.apt.orm.annotation.dao.method.operator.SelectList;
import org.jfw.apt.orm.annotation.dao.method.operator.SelectOne;
import org.jfw.apt.orm.annotation.dao.method.operator.Update;
import org.jfw.apt.orm.annotation.dao.method.operator.UpdateWith;
import org.jfw.apt.orm.annotation.dao.param.GroupSqlColumn;
import org.jfw.apt.orm.annotation.dao.param.GtEq;
import org.jfw.apt.orm.annotation.dao.param.In;
import org.jfw.apt.orm.annotation.dao.param.LessThan;
import org.jfw.apt.orm.annotation.dao.param.Like;
import org.jfw.apt.orm.annotation.dao.param.Set;
import org.jfw.apt.orm.annotation.dao.param.SqlColumn;
import org.jfw.apt.orm.core.defaultImpl.LongHandler;
import org.jfw.apt.orm.core.defaultImpl.StringHandler;
import org.jfw.util.PageQueryResult;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@DAO
public abstract class ArticleDao {
@Insert
public abstract int insert(Connection con, Article article) throws SQLException;
@Update
@Dynamic
public abstract int update(Connection con, Article article) throws SQLException;
@Insert
public abstract int insert(Connection con, ArticleWare ware) throws SQLException;
@Insert
public abstract int insert(Connection con, ArticleProduct articleProduct)throws SQLException;
@DeleteWith
@From(ArticleWare.class)
public abstract int deleteWare(Connection con, String id) throws SQLException;
@DeleteWith
@From(ArticleProduct.class)
public abstract int deleteProduct(Connection con, String id) throws SQLException;
@UpdateWith
@From(Article.class)
@SetSentence("PAGE_VIEWS = PAGE_VIEWS + 1")
public abstract int incPageViews(Connection con, String articleId) throws SQLException;
@UpdateWith
@From(Article.class)
public abstract int updateStatus(Connection con, String articleId, @Set String status) throws SQLException;
@UpdateWith
@From(Article.class)
public abstract int updatePublishTime(Connection con, String articleId, @Set String status, @Set String publishTime) throws SQLException;
@UpdateWith
@From(Article.class)
@SetSentence("ARTICLE_AGREE = ARTICLE_AGREE + 1")
public abstract int incAgree(Connection con, String articleId) throws SQLException;
@UpdateWith
@From(Article.class)
@SetSentence("ARTICLE_AGREE = ARTICLE_AGREE - 1")
public abstract int decAgree(Connection con, String articleId) throws SQLException;
@UpdateWith
@From(Article.class)
public abstract int updateSubject(Connection con, @Set String subject, String articleId) throws SQLException;
@UpdateWith
@From(Article.class)
public abstract int updateIndustry(Connection con, @Set String industry, String articleId) throws SQLException;
@DeleteWith
@From(Article.class)
public abstract int delete(Connection con, String articleId) throws SQLException;
@DeleteWith
@From(Article.class)
public abstract int deletePro(Connection con, String ownerId) throws SQLException;
@Exclude("articleContent")
@SelectList
@Where("STATUS = '2'")
public abstract List<Article> queryTiming(Connection con, @LessThan String publishTime) throws SQLException;
@Exclude("articleContent")
@SelectList
@OrderBy(" ORDER BY MODIFY_TIME DESC ")
@Where("ARTICLE_TYPE = '1'")
public abstract List<Article> queryPro(Connection con, String ownerId) throws SQLException;
@Exclude("articleContent")
@SelectList
@OrderBy(" ORDER BY MODIFY_TIME DESC ")
@Where("STATUS = '1' AND ARTICLE_TYPE = '1'")
public abstract List<Article> queryProPublish(Connection con, String ownerId) throws SQLException;
@Exclude("articleContent")
@PageSelect
@OrderBy(" ORDER BY PUBLISH_TIME DESC,SHARE_ID ASC")
@Where("STATUS = '1' AND ARTICLE_TYPE = '1'")
public abstract PageQueryResult<Article> pageQueryProPublish(Connection con, String ownerId, int pageSize, int pageNo) throws SQLException;
// @LimitSelect
// @Exclude("articleContent")
// @OrderBy(cols = {@LimitColumn(value = "publishTime", asc = false),
// @LimitColumn(value = "shareId",asc = false, handlerClass =
// LongHandler.class)}, value = "")
// @Where("STATUS = '1'")
// public abstract List<Article> proPublish(Connection con, String
// professorId, String publishTime, long shareId, int rows)throws
// SQLException;
//
// @LimitSelect
// @Exclude("articleContent")
// @OrderBy(cols = {@LimitColumn(value = "publishTime", asc = false),
// @LimitColumn(value = "shareId",asc = false, handlerClass =
// LongHandler.class)}, value = "")
// @Where("STATUS = '1'")
// public abstract List<Article> orgPublish(Connection con, String orgId,
// String publishTime, long shareId, int rows)throws SQLException;
@LimitSelect
@Exclude("articleContent")
@OrderBy(cols = { @LimitColumn(value = "publishTime", asc = false),
@LimitColumn(value = "shareId", asc = false, handlerClass = LongHandler.class) }, value = "")
@Where("STATUS = '1'")
public abstract List<Article> publish(Connection con, String articleType, String ownerId, String publishTime, long shareId, int rows) throws SQLException;
@LimitSelect
@Exclude("articleContent")
@OrderBy(cols = { @LimitColumn(value = "publishTime", asc = false),
@LimitColumn(value = "shareId", asc = false, handlerClass = LongHandler.class) }, value = "")
@Where("STATUS = '1'")
public abstract List<Article> publishInPlatform(Connection con,
@SqlColumn(handlerClass = StringHandler.class, value = { "ARTICLE_ID IN (SELECT AID FROM REFERENCED_ARTICLE WHERE PID=? )" }) String pid,
String publishTime, long shareId, int rows) throws SQLException;
@PageSelect
@Exclude("articleContent")
@OrderBy(value = "ORDER BY PUBLISH_TIME DESC")
@Where("STATUS = '1'")
public abstract PageQueryResult<Article> publishInPlatform(Connection con,
@SqlColumn(handlerClass = StringHandler.class, value = { "ARTICLE_ID IN (SELECT AID FROM REFERENCED_ARTICLE WHERE PID=? )" }) String pid,
@Nullable @GroupSqlColumn(handlerClass = StringHandler.class, value = { "ARTICLE_TITLE LIKE ?",
"OWNER_ID IN (SELECT ID FROM ORGANIZATION WHERE NAME LIKE ? OR FOR_SHORT LIKE ?)" }, additional = 1, isAnd = false) String key,
int pageSize, int pageNo) throws SQLException;
@PageSelect
@Exclude("articleContent")
@OrderBy(value = "ORDER BY PUBLISH_TIME DESC")
@Where("STATUS = '1'")
public abstract PageQueryResult<Article> publishNotInPlatform(Connection con,
@GroupSqlColumn(handlerClass = StringHandler.class, value = { "ARTICLE_ID NOT IN (SELECT AID FROM REFERENCED_ARTICLE WHERE PID=?)",
"ARTICLE_TYPE='2' AND OWNER_ID IN (SELECT OID FROM RESIDENT_ORG WHERE PID=?)" }, isAnd = true) String pid,
@Nullable @GroupSqlColumn(handlerClass = StringHandler.class, value = { "ARTICLE_TITLE LIKE ?",
"OWNER_ID IN (SELECT ID FROM ORGANIZATION WHERE NAME LIKE ? OR FOR_SHORT LIKE ?)" }, additional = 1, isAnd = false) String key,
int pageSize, int pageNo) throws SQLException;
@Exclude("articleContent")
@PageSelect
@OrderBy(" ORDER BY PUBLISH_TIME DESC,SHARE_ID ASC")
public abstract PageQueryResult<Article> pageQueryPublish(Connection con, String ownerId,String articleType, @Nullable @In String[] status,@Nullable @GroupSqlColumn(handlerClass = StringHandler.class, value = { "OWNER_ID IN (SELECT ID FROM PROFESSOR WHERE NAME LIKE ?)",
"OWNER_ID IN (SELECT ID FROM ORGANIZATION WHERE NAME LIKE ? OR FOR_SHORT LIKE ?)", "ARTICLE_TITLE LIKE ?",
"SUBJECT LIKE ?" }, additional = 1, isAnd = false) String key,int pageSize, int pageNo) throws SQLException;
@LimitQuery
@OrderBy(cols = { @LimitColumn(value = "publishTime", column = "PUBLISH_TIME", handlerClass = StringHandler.class, asc = false),
@LimitColumn(value = "articleId", column = "ARTICLE_ID", asc = false, handlerClass = StringHandler.class) }, value = "")
@Exclude({ "descp" })
public abstract List<Article> queryPublish(Connection con,String ownerId, String publishTime, String articleId, String articleType,@Nullable @In String[] status,@Nullable @GroupSqlColumn(handlerClass = StringHandler.class, value = { "OWNER_ID IN (SELECT ID FROM PROFESSOR WHERE NAME LIKE ?)",
"OWNER_ID IN (SELECT ID FROM ORGANIZATION WHERE NAME LIKE ? OR FOR_SHORT LIKE ?)", "ARTICLE_TITLE LIKE ?",
"SUBJECT LIKE ?" }, additional = 1, isAnd = false) String key,
int rows) throws SQLException;
@Exclude("articleContent")
@SelectList
@OrderBy(" ORDER BY MODIFY_TIME DESC ")
@Where("STATUS IN ('0','1','2') AND ARTICLE_TYPE = '1'")
public abstract List<Article> queryForDesk(Connection con, String ownerId) throws SQLException;
@Exclude("articleContent")
@SelectList
@OrderBy(" ORDER BY MODIFY_TIME DESC ")
@Where("ARTICLE_TYPE = '2'")
public abstract List<Article> queryOrg(Connection con, String ownerId) throws SQLException;
@Exclude("articleContent")
@SelectList
@OrderBy(" ORDER BY MODIFY_TIME DESC ")
@Where("STATUS = '1' AND ARTICLE_TYPE = '2'")
public abstract List<Article> queryOrgPublish(Connection con, String ownerId) throws SQLException;
@Exclude("articleContent")
@PageSelect
@OrderBy(" ORDER BY PUBLISH_TIME DESC,SHARE_ID ASC")
@Where("STATUS = '1' AND ARTICLE_TYPE = '2'")
public abstract PageQueryResult<Article> pageQueryOrgPublish(Connection con, String ownerId, int pageSize, int pageNo) throws SQLException;
@Exclude("articleContent")
@LimitSelect
@OrderBy(" ORDER BY MODIFY_TIME DESC ")
@Where("ARTICLE_TYPE = '2'")
public abstract List<Article> queryLimit(Connection con, String ownerId, @LessThan String modifyTime, int rows) throws SQLException;
@SelectOne
@Nullable
public abstract Article queryOne(Connection con, String articleId) throws SQLException;
@SelectList
public abstract List<ArticleWare> queryWares(Connection con, String id) throws SQLException;
@SelectList
public abstract List<ArticleProduct> queryProduct(Connection con, String id) throws SQLException;
public String[] queryArticleIdWithSameKeyWord(Connection con, String id, int rows) throws SQLException {
List<String> ret = new ArrayList<String>();
String sql = "select id,count(1) sort from art_key_word where kw in (select kw from art_key_word where id=?) and id <>? group by id order by sort desc limit ?";
PreparedStatement ps = con.prepareStatement(sql);
try {
ps.setString(1, id);
ps.setString(2, id);
ps.setInt(3, rows);
ResultSet rs = ps.executeQuery();
try {
while (rs.next()) {
ret.add(rs.getString(1));
}
} finally {
try {
rs.close();
} catch (Exception e1) {
}
}
} finally {
try {
ps.close();
} catch (Exception e2) {
}
}
return ret.isEmpty() ? null : ret.toArray(new String[ret.size()]);
}
@SelectList
@Exclude("articleContent")
public abstract List<Article> query(Connection con, @In String[] articleId,@Nullable String status) throws SQLException;
@Exclude("articleContent")
@LimitSelect
@Where("STATUS ='1'")
@OrderBy("ORDER BY PAGE_VIEWS DESC")
public abstract List<Article> limitQueryPublish(Connection con, @In String[] articleId, int rows) throws SQLException;
// public List<Article> queryLimit(Connection con,String[] keys,String
// articleId,int rows) throws SQLException{
// int index = 1;
// boolean hasKeys = null != keys;
// boolean hasArticleId = null != articleId;
// StringBuilder sql = new StringBuilder();
// sql.append("SELECT
// ARTICLE_ID,PROFESSOR_ID,ARTICLE_TITLE,ARTICLE_CONTENT,SUBJECT,PUBLISH_TIME,ARTICLE_IMG,ORG_ID,ARTICLE_TYPE,ARTICLE_AGREE,PAGE_VIEWS,STATUS,CREATE_TIME,MODIFY_TIME,SHARE_ID
// FROM ARTICLE");
// sql.append(" WHERE STATUS = '1'");
// if(hasArticleId){
// sql.append(" AND ARTICLE_ID != ?");
// }
// if(hasKeys){
// for (int i = 0; i < keys.length; i++) {
// if(i == 0){
// sql.append(" AND (SUBJECT LIKE ?");
// }else{
// sql.append(" OR SUBJECT LIKE ?");
// }
// }
// sql.append(")");
// }
// sql.append(" ORDER BY PUBLISH_TIME DESC");
// sql.append(" LIMIT ").append(rows);
// PreparedStatement ps = con.prepareStatement(sql.toString());
// try{
// if(hasArticleId){
// ps.setString(index++, articleId);
// }
// if(hasKeys){
// for (String key : keys) {
// ps.setString(index++, "%"+key+"%");
// }
// }
// ResultSet rs = ps.executeQuery();
// try{
// List<Article> articles = new ArrayList<Article>();
// while(rs.next()){
// Article article = new Article();
// article.setArticleId(rs.getString(1));
// String proId = rs.getString(2);
// if(rs.wasNull()){
// proId = null;
// }
// article.setProfessorId(proId);
// article.setArticleTitle(rs.getString(3));
// String articleContent = rs.getString(4);
// if(rs.wasNull()){
// articleContent = null;
// }
// article.setArticleContent(articleContent);
// String subject = rs.getString(5);
// if(rs.wasNull()){
// subject = null;
// }
// article.setSubject(subject);
// String publishTime = rs.getString(6);
// if(rs.wasNull()){
// publishTime = null;
// }
// article.setPublishTime(publishTime);
// String articleImg = rs.getString(7);
// if(rs.wasNull()){
// articleImg = null;
// }
// article.setArticleImg(articleImg);
// String org = rs.getString(8);
// if(rs.wasNull()){
// org = null;
// }
// article.setOrgId(org);
// String articleType = rs.getString(9);
// if(rs.wasNull()){
// articleType = null;
// }
// article.setArticleType(articleType);
// article.setArticleAgree(rs.getInt(10));
// article.setPageViews(rs.getInt(11));
// String status = rs.getString(12);
// if(rs.wasNull()){
// status = null;
// }
// article.setStatus(status);
// article.setCreateTime(rs.getString(13));
// article.setModifyTime(rs.getString(14));
// article.setShareId(rs.getLong(15));
// articles.add(article);
// }
// return articles;
// }finally{
// try{rs.close();}catch(Exception e1){}
// }
// }finally{
// try{ps.close();}catch(Exception e2) {}
// }
// }
//
@Exclude("articleContent")
@PageSelect
@OrderBy("ORDER BY PUBLISH_TIME DESC")
@Where("STATUS = '1'")
public abstract PageQueryResult<Article> queryPageForPublish(Connection con, @Like @Nullable String articleTitle, int pageSize, int pageNo)
throws SQLException;
@Exclude("articleContent")
@PageSelect
@OrderBy(" ORDER BY SORT_NUM DESC, PUBLISH_TIME DESC")
@Where("STATUS = '1'")
public abstract PageQueryResult<Article> firstPageQuery(Connection con,
@GroupSqlColumn(isAnd = false, handlerClass = StringHandler.class, value = { "OWNER_ID IN (SELECT ID FROM PROFESSOR WHERE NAME LIKE ?)",
"OWNER_ID IN (SELECT ID FROM ORGANIZATION WHERE NAME LIKE ? OR FOR_SHORT LIKE ?) ", "ARTICLE_TITLE LIKE ?",
"SUBJECT LIKE ?" }, additional = 1) @Nullable String key,
int pageSize, int pageNo) throws SQLException;
@LimitSelect
@Exclude("articleContent")
@Where("STATUS = '1'")
@OrderBy(cols = { @LimitColumn(value = "sortNum", asc = false, handlerClass = LongHandler.class), @LimitColumn(value = "publishTime", asc = false),
@LimitColumn(value = "articleId", asc = false) }, value = "")
public abstract List<Article> indexSearch(Connection con,
@Nullable @GroupSqlColumn(handlerClass = StringHandler.class, value = { "OWNER_ID IN (SELECT ID FROM PROFESSOR WHERE NAME LIKE ?)",
"OWNER_ID IN (SELECT ID FROM ORGANIZATION WHERE NAME LIKE ? OR FOR_SHORT LIKE ?)", "ARTICLE_TITLE LIKE ?",
"SUBJECT LIKE ?" }, additional = 1, isAnd = false) String key,
long sortNum, String publishTime, String articleId, int rows) throws SQLException;
// public PageQueryResult<Article> firstPageQuery(Connection con, String
// key, int pageSize, int pageNo) throws SQLException {
// int total = 0;
// PageQueryResult<Article> queryResult = new PageQueryResult<Article>();
// int index = 1;
// boolean hasKey = null != key;
// StringBuilder sql = new StringBuilder();
// sql.append(" WHERE STATUS = '1'");
// if (hasKey) {
// sql.append(" AND (PROFESSOR_ID IN (SELECT ID FROM PROFESSOR WHERE NAME
// LIKE ?)");
// sql.append(" OR ORG_ID IN (SELECT ID FROM ORGANIZATION WHERE NAME LIKE ?
// OR FOR_SHORT LIKE ?)");
// sql.append(" OR ARTICLE_TITLE LIKE ? OR SUBJECT LIKE ?)");
// }
// StringBuilder whereSql = sql;
// sql = new StringBuilder();
// sql.append("SELECT COUNT(1) FROM ARTICLE");
// sql.append(whereSql);
// PreparedStatement ps = con.prepareStatement(sql.toString());
// try {
// if (hasKey) {
// ps.setString(index++, key);
// ps.setString(index++, key);
// ps.setString(index++, key);
// ps.setString(index++, key);
// ps.setString(index++, key);
// }
// queryResult.setPageSize(pageSize);
// ResultSet rs = ps.executeQuery();
// try {
// rs.next();
// total = rs.getInt(1);
// } finally {
// try {
// rs.close();
// } catch (Exception e1) {
// }
// }
// } finally {
// try {
// ps.close();
// } catch (Exception e2) {
// }
// }
// queryResult.setTotal(total);
// if (0 == total) {
// queryResult.setPageNo(1);
// queryResult.setData(Collections.<Article> emptyList());
// return queryResult;
// }
// index = 1;
// boolean firstPage = (1 == pageNo);
// if (firstPage) {
// queryResult.setPageNo(1);
// sql = new StringBuilder();
// sql.append(
// "SELECT
// ARTICLE_ID,PROFESSOR_ID,ARTICLE_TITLE,'',SUBJECT,INDUSTRY,PUBLISH_TIME,ARTICLE_IMG,ORG_ID,ARTICLE_TYPE,ARTICLE_AGREE,PAGE_VIEWS,STATUS,CREATE_TIME,MODIFY_TIME,SHARE_ID,COL_NUM
// FROM ARTICLE");
// sql.append(whereSql);
// sql.append(" ORDER BY SORT_NUM DESC, PUBLISH_TIME DESC");
// sql.append(" LIMIT ").append(pageSize);
// } else {
// int pageNum = total / pageSize;
// if (total % pageSize != 0) {
// ++pageNum;
// }
// if (pageNo > pageNum) {
// pageNo = pageNum;
// }
// queryResult.setPageNo(pageNo);
// --pageNo;
// int offset = (pageNo * pageSize);
// sql = new StringBuilder();
// sql.append(
// "SELECT
// ARTICLE_ID,PROFESSOR_ID,ARTICLE_TITLE,'',SUBJECT,INDUSTRY,PUBLISH_TIME,ARTICLE_IMG,ORG_ID,ARTICLE_TYPE,ARTICLE_AGREE,PAGE_VIEWS,STATUS,CREATE_TIME,MODIFY_TIME,SHARE_ID,COL_NUM
// FROM ARTICLE");
// sql.append(whereSql);
// sql.append(" ORDER BY SORT_NUM DESC,PUBLISH_TIME DESC");
// sql.append(" LIMIT ").append(pageSize).append(" OFFSET ").append(offset);
// }
// ps = con.prepareStatement(sql.toString());
// try {
// if (hasKey) {
// ps.setString(index++, key);
// ps.setString(index++, key);
// ps.setString(index++, key);
// ps.setString(index++, key);
// ps.setString(index++, key);
// }
// ResultSet rs = ps.executeQuery();
// try {
// List<Article> articles = new ArrayList<Article>();
// queryResult.setData(articles);
// int size = 0;
// while ((size < pageSize) && rs.next()) {
// ++size;
// Article article = new Article();
// article.setArticleId(rs.getString(1));
// String professorId = rs.getString(2);
// if (rs.wasNull()) {
// professorId = null;
// }
// article.setProfessorId(professorId);
// article.setArticleTitle(rs.getString(3));
// String articleContent = rs.getString(4);
// if (rs.wasNull()) {
// articleContent = null;
// }
// article.setArticleContent(articleContent);
// String subject = rs.getString(5);
// if (rs.wasNull()) {
// subject = null;
// }
// article.setSubject(subject);
// String industry = rs.getString(6);
// if (rs.wasNull()) {
// industry = null;
// }
// article.setIndustry(industry);
// String publishTime = rs.getString(7);
// if (rs.wasNull()) {
// publishTime = null;
// }
// article.setPublishTime(publishTime);
// String articleImg = rs.getString(8);
// if (rs.wasNull()) {
// articleImg = null;
// }
// article.setArticleImg(articleImg);
// String orgId = rs.getString(9);
// if (rs.wasNull()) {
// orgId = null;
// }
// article.setOrgId(orgId);
// String articleType = rs.getString(10);
// if (rs.wasNull()) {
// articleType = null;
// }
// article.setArticleType(articleType);
// article.setArticleAgree(rs.getInt(11));
// article.setPageViews(rs.getInt(12));
// String status = rs.getString(13);
// if (rs.wasNull()) {
// status = null;
// }
// article.setStatus(status);
// article.setCreateTime(rs.getString(14));
// article.setModifyTime(rs.getString(15));
// article.setShareId(rs.getLong(16));
// article.setColNum(rs.getInt(17));
// articles.add(article);
// }
// return queryResult;
// } finally {
// try {
// rs.close();
// } catch (Exception e3) {
// }
// }
// } finally {
// try {
// ps.close();
// } catch (Exception e4) {
// }
// }
// }
@PageQuery
@Exclude("articleContent")
@OrderBy(" ORDER BY selfOrderField DESC,SHARE_ID ASC ")
@Where("STATUS IN ('1','0','2')")
public abstract PageQueryResult<SelfArticle> queryPageForSelf(Connection con, String articleType, String ownerId,
@Nullable @GroupSqlColumn(handlerClass = StringHandler.class, value = { "ARTICLE_TITLE LIKE ?", "SUBJECT LIKE ?" }, isAnd = false) String key,
int pageSize, int pageNo) throws SQLException;
public PageQueryResult<FindInfo> queryPage(Connection con, int pageSize, int pageNo) throws SQLException {
int total = 0;
PageQueryResult<FindInfo> queryResult = new PageQueryResult<FindInfo>();
String sql = null;
sql = "SELECT SUM(NUM) FROM (SELECT COUNT(1) NUM FROM ARTICLE UNION ALL SELECT COUNT(1) NUM FROM RESOURCE) TBL";
PreparedStatement ps = con.prepareStatement(sql);
try {
queryResult.setPageSize(pageSize);
ResultSet rs = ps.executeQuery();
try {
rs.next();
total = rs.getInt(1);
} finally {
try {
rs.close();
} catch (Exception e1) {
}
}
} finally {
try {
ps.close();
} catch (Exception e2) {
}
}
queryResult.setTotal(total);
if (0 == total) {
queryResult.setPageNo(1);
queryResult.setData(Collections.<FindInfo> emptyList());
return queryResult;
}
boolean firstPage = (1 == pageNo);
if (firstPage) {
queryResult.setPageNo(1);
sql = "SELECT ARTICLE_ID,ARTICLE_TITLE,ARTICLE_IMG,ARTICLE_TYPE,CREATE_TIME,OWNER_ID FROM ARTICLE"
+ " UNION ALL SELECT RESOURCE_ID,RESOURCE_NAME,NULL,'3',CREATE_TIME,NULL,PROFESSOR_ID FROM RESOURCE";
sql = sql + " ORDER BY CREATE_TIME DESC ";
sql = sql + " LIMIT " + pageSize;
} else {
int pageNum = total / pageSize;
if (total % pageSize != 0) {
++pageNum;
}
if (pageNo > pageNum) {
pageNo = pageNum;
}
queryResult.setPageNo(pageNo);
--pageNo;
int offset = (pageNo * pageSize);
sql = "SELECT ARTICLE_ID,ARTICLE_TITLE,ARTICLE_IMG,ARTICLE_TYPE,CREATE_TIME,OWNER_ID FROM ARTICLE"
+ " UNION ALL SELECT RESOURCE_ID,RESOURCE_NAME,NULL,'3',CREATE_TIME,NULL,PROFESSOR_ID FROM RESOURCE";
sql = sql + " ORDER BY CREATE_TIME DESC ";
sql = sql + " LIMIT " + pageSize + " OFFSET " + offset;
}
ps = con.prepareStatement(sql);
try {
ResultSet rs = ps.executeQuery();
try {
List<FindInfo> findInfos = new ArrayList<FindInfo>();
queryResult.setData(findInfos);
int size = 0;
while ((size < pageSize) && rs.next()) {
++size;
FindInfo findInfo = new FindInfo();
findInfo.setId(rs.getString(1));
findInfo.setName(rs.getString(2));
String image = rs.getString(3);
if (rs.wasNull()) {
image = null;
}
findInfo.setImage(image);
findInfo.setType(rs.getString(4));
findInfo.setCreateTime(rs.getString(5));
String ownerId = rs.getString(6);
findInfo.setOwner(ownerId);
findInfos.add(findInfo);
}
return queryResult;
} finally {
try {
rs.close();
} catch (Exception e3) {
}
}
} finally {
try {
ps.close();
} catch (Exception e4) {
}
}
}
public PageQueryResult<FindInfo> queryFindHot(Connection con, int pageSize, int pageNo) throws SQLException {
int total = 0;
PageQueryResult<FindInfo> queryResult = new PageQueryResult<FindInfo>();
String sql = null;
sql = "SELECT SUM(NUM) FROM ((SELECT COUNT(1) NUM FROM ARTICLE WHERE STATUS = '1') UNION ALL (SELECT COUNT(1) NUM FROM RESOURCE WHERE STATUS = '1')) TBL";
PreparedStatement ps = con.prepareStatement(sql);
try {
queryResult.setPageSize(pageSize);
ResultSet rs = ps.executeQuery();
try {
rs.next();
total = rs.getInt(1);
} finally {
try {
rs.close();
} catch (Exception e1) {
}
}
} finally {
try {
ps.close();
} catch (Exception e2) {
}
}
queryResult.setTotal(total);
if (0 == total) {
queryResult.setPageNo(1);
queryResult.setData(Collections.<FindInfo> emptyList());
return queryResult;
}
boolean firstPage = (1 == pageNo);
if (firstPage) {
queryResult.setPageNo(1);
sql = "(SELECT ARTICLE_ID,ARTICLE_TITLE,ARTICLE_IMG,ARTICLE_TYPE,PUBLISH_TIME,OWNER_ID FROM ARTICLE WHERE STATUS = '1')"
+ " UNION ALL (SELECT RESOURCE_ID,RESOURCE_NAME,NULL,CASE WHEN RESOURCE_TYPE = '1' THEN '3' WHEN RESOURCE_TYPE = '2' THEN '4' ELSE NULL END,"
+ " PUBLISH_TIME,ORG_ID,PROFESSOR_ID FROM RESOURCE WHERE STATUS = '1')";
sql = sql + " ORDER BY PUBLISH_TIME DESC ";
sql = sql + " LIMIT " + pageSize;
} else {
int pageNum = total / pageSize;
if (total % pageSize != 0) {
++pageNum;
}
if (pageNo > pageNum) {
pageNo = pageNum;
}
queryResult.setPageNo(pageNo);
--pageNo;
int offset = (pageNo * pageSize);
sql = "(SELECT ARTICLE_ID,ARTICLE_TITLE,ARTICLE_IMG,ARTICLE_TYPE,PUBLISH_TIME,OWNER_ID FROM ARTICLE WHERE STATUS = '1')"
+ " UNION ALL (SELECT RESOURCE_ID,RESOURCE_NAME,NULL,CASE WHEN RESOURCE_TYPE = '1' THEN '3' WHEN RESOURCE_TYPE = '2' THEN '4' ELSE NULL END,"
+ " PUBLISH_TIME,ORG_ID,PROFESSOR_ID FROM RESOURCE WHERE STATUS = '1')";
sql = sql + " ORDER BY PUBLISH_TIME DESC ";
sql = sql + " LIMIT " + pageSize + " OFFSET " + offset;
}
ps = con.prepareStatement(sql);
try {
ResultSet rs = ps.executeQuery();
try {
List<FindInfo> findInfos = new ArrayList<FindInfo>();
queryResult.setData(findInfos);
int size = 0;
while ((size < pageSize) && rs.next()) {
++size;
FindInfo findInfo = new FindInfo();
findInfo.setId(rs.getString(1));
findInfo.setName(rs.getString(2));
String image = rs.getString(3);
if (rs.wasNull()) {
image = null;
}
findInfo.setImage(image);
findInfo.setType(rs.getString(4));
String createTime = rs.getString(5);
if (rs.wasNull()) {
createTime = null;
}
findInfo.setCreateTime(createTime);
String ownerId = rs.getString(6);
findInfo.setOwner(ownerId);
findInfos.add(findInfo);
}
return queryResult;
} finally {
try {
rs.close();
} catch (Exception e3) {
}
}
} finally {
try {
ps.close();
} catch (Exception e4) {
}
}
}
@SelectOne
@Nullable
public abstract Article query(Connection con, long shareId) throws SQLException;
@PageSelect
@Exclude("articleContent")
@OrderBy(" ORDER BY PUBLISH_TIME DESC,SHARE_ID ASC ")
@Where("STATUS='1'")
public abstract PageQueryResult<Article> queryFind(Connection con, Integer colNum, @Nullable @In(include = false) String[] articleId, int pageSize,
int pageNo) throws SQLException;
@LimitSelect
@Exclude("articleContent")
@OrderBy(" ORDER BY PAGE_VIEWS DESC,SHARE_ID ASC ")
@Where("STATUS='1'")
public abstract List<Article> lasterByPublishTime(Connection con, @GtEq String publishTime, int rows) throws SQLException;
@LimitSelect
@OrderBy(" ORDER BY PAGE_VIEWS DESC")
@Where("STATUS = '1' ")
public abstract List<Article> queryByWareId(Connection con,
@SqlColumn(handlerClass = StringHandler.class, value = { "ARTICLE_ID IN (SELECT ID FROM ARTICLE_WARE WHERE WARE =?)" }) String ware, int rows)
throws SQLException;
@LimitSelect
@OrderBy(" ORDER BY PAGE_VIEWS DESC")
@Where("STATUS = '1'")
public abstract List<Article> queryByProductId(Connection con, @SqlColumn(handlerClass = StringHandler.class, value = {"ARTICLE_ID IN (SELECT ID FROM ARTICLE_PRODUCT WHERE PRODUCT =?)"}) String product, int rows) throws SQLException;
@DefaultValue("0")
@QueryVal
@Where("STATUS = '1'")
@Column(value = "COUNT(1)", handlerClass = LongHandler.class)
@From(Article.class)
public abstract long countPublish(Connection con, String articleType, String ownerId) throws SQLException;
}
|