create table NEWS ( ID INTEGER not null, TITLE VARCHAR2(50), AUTHOR VARCHAR2(12), CREATETIME DATE, CONTENT VARCHAR2(2000) ) insert into NEWS (ID, TITLE, AUTHOR, CREATETIME, CONTENT) values (1, 'title1', 'author1', to_date('14-06-2010', 'dd-mm-yyyy'), 'content1'); insert into NEWS (ID, TITLE, AUTHOR, CREATETIME, CONTENT) values (2, 'title2', 'author2', to_date('21-06-2010', 'dd-mm-yyyy'), 'content2'); insert into NEWS (ID, TITLE, AUTHOR, CREATETIME, CONTENT) values (3, 'title3', 'author3', to_date('23-06-2010', 'dd-mm-yyyy'), '内容3'); commit;
entity:
package cn.jbit.entity; import java.util.Date; public class News { // 新闻标识符 private int id; // 新闻标题 private String title; // 新闻作者 private String author; // 新闻创建时间 private Date createTime; // 新闻内容 private String content; /** * 构造方法 */ public News() { } public News(int id, String title, String author, Date createTime, String content) { this.setId(id); this.setTitle(title); this.setAuthor(author); this.setCreateTime(createTime); this.setContent(content); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
dao:
package cn.jbit.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class BaseDao { // 数据库驱动字符串 private static String driver = "oracle.jdbc.driver.OracleDriver"; // 连接URL字符串 private static String url = "jdbc:oracle:thin:@localhost:1521:oracle10"; // 数据库用户名 private static String user = "news"; // 用户密码 private static String password = "accp"; /** * 获取数据库连接对象 */ public Connection getConnection() { Connection conn = null; // 数据连接对象 // 获取连接并捕获异常 try { // 加载驱动 Class.forName(driver); // 获取数据库连接 conn = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; // 返回数据连接对象 } /** * 关闭数据库连接 */ public void closeAll(Connection conn, PreparedStatement pstmt, ResultSet rs) { // 若结果集对象不为空,则关闭 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } // 若PreparedStatement对象不为空,则关闭 if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } // 若数据库连接对象不为空,则关闭 if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 执行更新、删除、插入SQL语句命令 */ public int executeUpdate(String sql, Object[] pars) { int rowCount = 0; Connection conn = null; PreparedStatement pstmt = null; try { // 连接数据库 conn = this.getConnection(); // 创建数据库命令对象 pstmt = conn.prepareStatement(sql); if (pars != null) { for (int i = 0; i < pars.length; i++) { pstmt.setObject(i + 1, pars[i]); } } // 执行数据库命令 rowCount = pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } return rowCount; } }
package cn.jbit.dao; import java.util.List; import cn.jbit.entity.News; public interface NewsDao { /** * 对News进行查询操作 */ List<News> executeQuery(String sql, Object[] pars); /** * 对News进行增、删、改操作 */ int executeUpdate(String sql, Object[] pars); }
实现dao:
package cn.jbit.dao.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import cn.jbit.dao.BaseDao; import cn.jbit.dao.NewsDao; import cn.jbit.entity.News; public class NewsDaoOraleImpl extends BaseDao implements NewsDao { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; /** * 查询所有新闻信息 */ public List<News> executeQuery(String sql, Object[] param) { // 创建一个泛型集合对象 List<News> newLists = new ArrayList<News>(); try { // 获取数据库连接对象 conn = super.getConnection(); // 创建数据库命令对象 pstmt = conn.prepareStatement(sql); if (param != null) { for (int i = 0; i < param.length; i++) { pstmt.setObject((i + 1), param[i]); } } // 执行数据库命令 rs = pstmt.executeQuery(); // 处理结果 while (rs.next()) { // 创建一个新闻对象 News news = new News(); news.setId(rs.getInt(1)); news.setTitle(rs.getString(2)); news.setAuthor(rs.getString(3)); news.setCreateTime(rs.getDate(4)); news.setContent(rs.getString(5)); // 把数据添加到集合中 newLists.add(news); } } catch (SQLException e) { e.printStackTrace(); } finally { // 调用关闭数据库连接 super.closeAll(conn, pstmt, rs); } return newLists; } }
mondel:
package cn.jbit.mondel; import java.util.List; import cn.jbit.dao.NewsDao; import cn.jbit.dao.impl.NewsDaoOraleImpl; import cn.jbit.entity.News; import cn.jbit.tool.FileIO; /** * 使用数据库内容替换模板文件,生成HTML文件 * */ public class NewsManager { public void toHtml() { // 读取模板文件内容 FileIO fileIO = new FileIO(); String templates = fileIO.readFile("contentCMS.template"); // 读取数据库表 NewsDao newsDao = new NewsDaoOraleImpl(); String sql = "select * from news"; List<News> list = newsDao.executeQuery(sql, null); // 替换模板文件 for (int i = 0; i < list.size(); i++) { // 获取一条新闻 News news = list.get(i); // 使用该条新闻信息替换对应占位符 String replace = new String(); replace = templates; replace = replace.replace("{title}", news.getTitle()) .replace("{author}", news.getAuthor()) .replace("{createTime}", news.getCreateTime().toString()) .replace("{content}", news.getContent()); String path = "news" + i + ".html"; fileIO.writeFile(path, replace); } } }
tool:
package cn.jbit.tool; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.nio.charset.Charset; /** * 文件流 * */ public class FileIO { /** * 读取文件 * */ public String readFile(String path) { StringBuffer sbf = new StringBuffer(); Reader reader = null; char[] ch = new char[1024]; // 读取模板文件内空到StringBuffer中 try { reader = new InputStreamReader(new FileInputStream(path), Charset.forName("UTF-8")); while (reader.read(ch) != -1) { sbf.append(ch); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try {// 关闭读取器 if (reader != null) { reader.close(); } } catch (IOException e) { e.printStackTrace(); } } return sbf.toString(); } /** * 写入文件 */ public void writeFile(String path, String content) { Writer writer = null; // 写入流 try { writer = new OutputStreamWriter(new FileOutputStream(path), Charset.forName("UTF-8")); writer.write(content); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try {// 关闭写入流 if (writer != null) { writer.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
test:
package cn.jbit.test; import cn.jbit.mondel.NewsManager; public class Test { public static void main(String[] args) { //创建对象 NewsManager newsMan=new NewsManager(); // 调用方法 newsMan.toHtml(); } }
个人E-mail:chaoyi77@163.com
相关推荐
通过《地理信息系统实习教程(Arc GIS 9.x)》,读者不仅可以系统地学习GIS理论,还能通过实际操作深化理解,提高解决问题的能力。配合提供的数据集,读者可以按照教程的指导一步步完成案例练习,从而更好地掌握GIS...
《C++程序设计精要教程学习指导与习题解答》是一本针对初学者和进阶者深入理解C++编程语言的教材。这本书旨在通过详细解析每个章节的关键概念和技巧,帮助读者掌握C++的核心知识,并通过习题解答来巩固所学。而与之...
9. **资源和工具**:提供必要的工具和软件资源,如专用的维修工具、驱动程序、诊断软件等,以便于用户进行维修工作。 总之,《S9运算板维修指导》是IT技术人员和电子工程师的宝贵参考资料,它能提升他们在面对S9...
9. 汇编语言程序设计:学习基本的汇编语言指令,编写简单的汇编程序,理解指令执行过程。 10. 实验与实践:通过实际操作加深对理论知识的理解,例如设计简单的数字逻辑电路,模拟CPU执行过程等。 唐朔飞编著的...
《电路 第5版与学习指导与习题分析》是一本为电路学习者提供全面支持的教材辅助资料。这本书结合了理论知识与实践应用,旨在帮助读者深入理解和掌握电路的基础概念、基本定律以及分析方法。第5版的更新可能涵盖了...
基于动态指导的深度学习模型稀疏化执行方法 深度学习领域中,稀疏化执行方法是提高模型执行效率的重要手段。当前,稀疏化技术主要针对特定问题的稀疏化,且针对推理的多、针对训练的少,缺乏在训练执行阶段进行动态...
【阅悦凯拉斯英语平台 v4.3.9.149796】是一款专为教育学习设计的安卓应用程序,旨在提供全面、高效的英语学习资源和工具,帮助用户提升英语水平。这款软件集成了多种功能,包括词汇学习、听力训练、阅读理解、口语...
计算机系统结构是计算机科学与技术领域的一个重要分支,它...通过深入学习以上知识点,并结合《计算机系统结构:应试指导》中的详细解释和例题,考生能够全面掌握计算机系统结构的基础知识,从而在考试中取得理想成绩。
在这个压缩包文件“小组动力理论学习指导.共2页.pdf.zip”中,我们可以期待找到有关这个理论的深入解析和实践指导。 小组动力理论的核心在于理解个体在群体中的行为模式,以及这些行为如何受其他成员和整体环境的...
深度学习课程指导手册1 深度学习课程指导手册1是一个详细的课程大纲,涵盖了深度学习的基础知识、应用场景、模型特性分析、训练方法、应用案例剖析和实践应用等方面。本手册从课程介绍、课程时间地点、实践题目、...
这篇文档是关于中南大学远程教育《网络教育学习指导考试》的习题及答案,涵盖了多个方面的知识,包括中南大学的校训、远程教育的特点、网络学习平台的网址、人与动物的区别、远程教育的历史、网络学历教育的范畴、...
屈婉玲编著的《离散数学习题解答与学习指导》第三版,是为配合离散数学的教学而设计的一本习题集,旨在帮助学生深入理解和掌握这门学科的核心概念。这本书包含了丰富的习题和解答,对于学习离散数学的学生来说,是一...
《Java实用教程学习指导(第二版)》是由张跃平和耿祥义编著的一本针对Java编程初学者的专业教程。这本书旨在帮助读者快速掌握Java编程语言的核心概念和实际应用,通过实例解析和详细的指导,使得学习过程更为高效。...
《高频电子线路学习指导书》是专为张肃文教授编著的《高频电子线路》(第五版)教材配套设计的学习指南,旨在帮助学生和读者更深入、系统地理解和掌握高频电子线路的相关知识。这份学习指导书包含了丰富的解析、解答...
9. 建立与实习单位的合作管理机制。 10. 认认真真、开开心心地做好每一件事、注意每一个细节,学习到本部门最优秀员工的工作经历和技巧,也可以到达实习的目的——学会做事、学会做人。 通过这些指导建议,学生可以...
【描述】"ebook-9.zip(英文的)" 表明该压缩包内的内容是英文版的,因此读者需要一定的英文阅读能力来理解和学习其中的知识。这可能对非英语为母语的学习者构成一定挑战,但也为他们提供了学习和提高英文专业技能的...
服务器上架安装拆装指导PPT学习教案 服务器上架安装拆装指导是一份详细的PPT学习教案,旨在帮助学生或 IT 专业人员学习服务器的安装、拆装和维修知识。本PPT学习教案涵盖了服务器技术规范的九要素,包括备数据、...
《通信电子电路学习指导》第二版是由于洪珍编著的一本专为通信电子电路学习者设计的教学指导书籍。该书于2012年出版,旨在帮助学生深入理解和掌握高频电子电路的基本概念、原理及应用。这本书包含了丰富的习题详解、...
学习指导《算法艺术入门》则为读者提供了更具体的实践指导和解题思路,帮助读者更好地消化和应用书中的理论知识。 在算法领域,本书主要讲解了以下几个关键知识点: 1. **排序与搜索**:包括快速排序、归并排序、...
《Microsoft.DirectX.9.Programmable.Graphics....通过学习《Microsoft.DirectX.9.Programmable.Graphics.Pipeline》,开发者可以深入理解DirectX 9.0的图形处理机制,从而创建出更为精细、动态的游戏和图形应用。