portal web service

ArticleDao.java 29KB

    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; }