57-005-3 bootstrap实现一个简单的项目案例--新闻操作(基于jsp无刷新异步操作)

资源文件下载: https://yunpan.cn/OcRdu34JqpRdtw  访问密码 67af

3.1 本项目的将按照企业标准开发流程,将程序分成几个层次,同时使用mysql数据库,IDEA开发工具

3.2 本程序主要是对新闻数据(编号、标题、发布日期、内容)的一个维护,具体要求:

    a. 业务层--增加新闻数据

            数据层--新闻表中保存新增的数据

    b. 业务层--要列表实现新闻数据,同时还要求分页

            数据层--通过数据库查询部分数据

            数据层--统计所有新闻数据量

    c. 业务层--可以修改新闻数据

            数据层--修改标题和内容,不允许修改编号和发布日期

    d. 业务层--可以删除指定新闻数据

            数据层--通过编号批量删除数据

3.3 本次开发只实现最核心的功能,不涉及数据验证。

3.4 编写数据库脚本

    news.sql

-- 删除数据库
DROP DATABASE IF EXISTS ms ;
-- 创建数据表
CREATE DATABASE ms CHARACTER SET UTF8 ;
-- 使用数据库
USE ms ;
-- 删除数据表
DROP TABLE IF EXISTS news ;
-- 创建数据表
CREATE TABLE news (
 nid   INT AUTO_INCREMENT ,
 title  VARCHAR(50) ,
 pubdate DATETIME ,
 content TEXT ,
 CONSTRAINT pk_nid PRIMARY KEY (nid)
)type=innodb;

3.5 利用IDEA工具创建一个NewsProject项目,并导入bootstrap开发包和jquery的js文件,然后导入数据库脚本到src目录下

3.6 利用mysql数据库工具运行上面的脚本从而建立一个数据表

3.7 通过以上步骤完成了一些准备工作,现在为项目继续准备数据库的驱动程序

3.8 现在定义一个数据库连接的类,它只负责数据库的打开与关闭

    DatabaseConnection.java

public class DatabaseConnection {
    private static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
    private static final String DBURL = "jdbc:mysql://localhost:3306/ms" ;
    private static final String USER = "root" ;
    private static final String PWD = "o" ;
    private Connection conn ;
    public DatabaseConnection(){
        try {
            Class.forName(DBDRIVER);
            conn = DriverManager.getConnection(DBURL, USER, PWD);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public Connection getConnection(){
        return conn ;
    }
    public void close(){
        if(conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
3.9 下面就定义一个vo类的javabean

    News.java
public class News implements Serializable{
    private Integer nid ;
    private String title ;
    private String content ;
    private Date pubdate ;
    public Integer getNid() {
        return nid;
    }
    public void setNid(Integer nid) {
        this.nid = nid;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public Date getPubdate() {
        return pubdate;
    }
    public void setPubdate(Date pubdate) {
        this.pubdate = pubdate;
    }
}

3.10 定义数据层的开发,这个层主要通过PreparedStatement类进行操作

3.11 首先定义一个dao层的接口

    INewsDAO.java

public interface INewsDAO {
    public boolean doCreate(News vo) throws Exception ;
    public boolean doUpdate(News vo) throws Exception ;
    public boolean doRemoveBatch(Set<Integer> nids) throws Exception ;
    public News findById(Integer nid)throws Exception ;
    public List<News> findAll(Integer currentPage,Integer lineSize)throws Exception ;
    public Integer getAllCount()throws Exception ;
}

3.12 然后再定义上面接口的实现子类

    NewsDAOImpl.java     

public class NewsDAOImpl implements INewsDAO{
    private Connection conn ;
    private PreparedStatement pstmt ;
    String sql = null ;
    public NewsDAOImpl(Connection conn){
        this.conn = conn ;
    }
    public boolean doCreate(News vo) throws Exception {
        sql = "INSERT INTO news(title,pubdate,content) VALUES(?,?,?)" ;
        pstmt = conn.prepareStatement(sql) ;
        pstmt.setString(1,vo.getTitle());
        pstmt.setDate(2,new java.sql.Date(vo.getPubdate().getTime()));
        pstmt.setString(3,vo.getContent());
        return pstmt.executeUpdate()>0;
    }
    public boolean doUpdate(News vo) throws Exception {
        sql = "UPDATE news SET title=?,content=? WHERE nid=?" ;
        pstmt = conn.prepareStatement(sql) ;
        pstmt.setString(1,vo.getTitle());
        pstmt.setString(2,vo.getContent());
        pstmt.setInt(1,vo.getNid());
        return pstmt.executeUpdate()>0;
    }
    public boolean doRemoveBatch(Set<Integer> nids) throws Exception {
        if(nids.size() == 0)
            return false ;
        StringBuffer sql = new StringBuffer("DELETE FROM news WHERE nid IN (");
        Iterator<Integer> iter = nids.iterator() ;
        while(iter.hasNext()){
            sql.append(iter.next()+",") ;
        }
        sql.delete(sql.length()-1,sql.length()).append(")") ; //删除最后那个逗号
        pstmt = conn.prepareStatement(sql.toString()) ;
        return pstmt.executeUpdate() == nids.size(); //不能用"> 0"这样不能保证所有的都能被删除
    }
    public List<News> findAll(Integer currentPage, Integer lineSize) throws Exception {
        sql = "SELECT nid,title,content,pubdate FROM news LIMIT ?,? " ;
        pstmt = conn.prepareStatement(sql) ;
        pstmt.setInt(1,(currentPage-1)*lineSize);
        pstmt.setInt(2,lineSize);
        List<News> list = new ArrayList<News>() ;
        ResultSet rs = pstmt.executeQuery();
        while(rs.next()){
            News news = new News();
            news.setNid(rs.getInt("nid"));
            news.setTitle(rs.getString("title"));
            news.setContent(rs.getString("content"));
            news.setPubdate(rs.getDate("pubdate"));
            list.add(news) ;
        }
        return list;
    }
    public Integer getAllCount() throws Exception {
        sql = "SELECT COUNT(*) FROM news" ;
        pstmt = conn.prepareStatement(sql) ;
        ResultSet rs = pstmt.executeQuery() ;
        if(rs.next())
            return rs.getInt(1);
        return 0 ;
    }
}

3.13 在定义了DAO层的实现类和接口以后,那么就需要为这个dao层定义一个工厂类,通过此工厂类就能得到DAO接口的对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值