通过自动回复机器人学Mybatis(代码重构)

imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154

ListServlet.java

package com.imooc.servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.imooc.service.ListService;

/**
 * 列表页面初始化控制
 */
@SuppressWarnings("serial")
public class ListServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置编码
        req.setCharacterEncoding("UTF-8");
        // 接受页面的值
        String command = req.getParameter("command");
        String description = req.getParameter("description");
        // 向页面传值
        req.setAttribute("command", command);
        req.setAttribute("description", description);
        // 查询消息列表并传给页面
        ListService listService = new ListService();
        req.setAttribute("messageList", listService.queryMessageList(command, description));
        // 页面跳转
        req.getRequestDispatcher("/WEB-INF/jsp/back/list.jsp").forward(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        this.doGet(req, resp);
    }
}

MessageDao.java

package com.imooc.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.imooc.bean.Message;

public class MessageDao {
    // 数据库驱动
    private static final String JDBC_DRIVER = "org.gjt.mm.mysql.Driver";
    // 数据库地址
    private static final String DB_URL = "jdbc:mysql://localhost:3306/miro_message";

    // 用户名与密码
    private static final String USER = "root";
    private static final String PASS = "pass";

    private static Connection conn = null;

    // 加载数据库驱动
    static {
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    // 获取消息列表
    public List<Message> queryMessageList(String command, String description) {
        List<Message> messageList = new ArrayList<>();

        // SQL拼接
        StringBuilder sqlBuilder = new StringBuilder();
        sqlBuilder.append("select ID, COMMAND, DESCRIPTION, CONTENT from MESSAGE where 1=1");

        List<String> paramList = new ArrayList<>();
        // 判断指令是否为空
        if (command != null && !"".equals(command.trim())) {
            sqlBuilder.append(" and COMMAND=?");
            paramList.add(command);
        }
        // 判断描述是否为空
        if (description != null && !"".equals(description.trim())) {
            sqlBuilder.append(" and DESCRIPTION like ‘%‘ ? ‘%‘");
            paramList.add(description);
        }

        String sql = sqlBuilder.toString();

        PreparedStatement prep = null;
        ResultSet result = null;
        try {
            prep = conn.prepareStatement(sql);
            // 设置SQL参数
            for (int i = 0; i != paramList.size(); ++i) {
                prep.setString(i+1, paramList.get(i));
            }
            // 执行查找操作
            result = prep.executeQuery();
            while (result.next()) {
                // 把查找结果放进List里
                Message message = new Message();
                messageList.add(message);

                message.setId(result.getString("ID"));
                message.setCommand(result.getString("COMMAND"));
                message.setDescription(result.getString("DESCRIPTION"));
                message.setContent(result.getString("CONTENT"));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }

        // 如果出现异常就返回一个空的List
        return messageList;
    }
}

ListService.java

package com.imooc.service;

import java.util.List;

import com.imooc.bean.Message;
import com.imooc.dao.MessageDao;

/**
 *
 * 列表相关的业务功能
 *
 */
public class ListService {
    /**
     * 获取消息列表
     */
    public List<Message> queryMessageList(String command, String description) {
        MessageDao dao = new MessageDao();
        return dao.queryMessageList(command, description);
    }
}
时间: 2024-12-28 01:39:16

通过自动回复机器人学Mybatis(代码重构)的相关文章

通过自动回复机器人学Mybatis:MySQL脚本 + db&gt;&gt;dao&gt;&gt;service&gt;&gt;servlet

留着参考 makeData.sql delimiter // create procedure make_data() begin declare i int default 1; while i < 1000 do insert into message values(i, 'a', 'b', 'c'); set i = i + 1; end while; end; // call make_data(); DROP PROCEDURE IF EXISTS make_data; Message

通过自动回复机器人学Mybatis(搭建核心架构)

imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 MessageDao.java package com.imooc.dao; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.imooc.bean.Message; imp

通过自动回复机器人学Mybatis(OGNL参考)

imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154

Windows程序代码重构

代码重构:在程序功能实现之后,对代码进行一定规模的整理,使之符合"高内聚.低耦合"的软件设计原则,便于维护和使用. ①用函数封装消息处理代码--对Windows程序窗口函数中的每一个case程序段进行封装以形成一个消息处理函数,而在case中调用这个函数. ②利用数组或链表实现消息映射表进一步实现代码的隔离--因为窗口函数switch-case结构实质上实现的就是一个根据消息标识来查找消息处理代码的功能,故可以用消息映射表和一段查表程序来替代它,表中的每一项可以使用一个函数指针来指向消

Job Service代码重构遐想

最近有大概半个月的时间可以重构下代码,刚好可以重新整理下Job Service相关的代码.前段时间由于忙于完成Job Service所有功能以及完成对Auto Job的支持以正常上线,使得有些地方的代码写得不是特别优雅.主要集中在以下一些地方: DAG状态的转移 目前DAG状态分为3层,分别为ApplicationStatus.TaskStatus.InstanceStatus.每个层次都有以下几种状态,Waiting.Running.Finished.Stopped.Failed.并且DAG有

第九课、计算器界面代码重构

一.重构的概念 1.重构是以改善代码质量为目的代码重写 (1).使其软件的设计和架构更加合理 (2).提高软件的扩展性和维护性 2.代码实现和代码重构的不同 (1).代码实现:按照设计编程实现,重在实现功能 (2).代码重构:以提高代码质量为目的软件架构优化 (3).区别 A.代码实现时不考虑架构的好坏,只考虑功能的实现 B.代码重构时不影响已实现的功能,只考虑架构的改善 3.软件开发的过程 (1).从工程的角度对软件开发中的活动进行定义和管理 4.什么样的代码需要重构 (1).当发现项目中重复

step 1 代码重构

代码重构 代码重构介绍 重构目的 相同的代码最好只出现一次 主次方法 主方法 只包含实现完整逻辑的子方法 思维清楚,便于阅读 次方法 实现具体逻辑功能 测试通过后,后续几乎不用维护 重构的步骤 1  新建一个方法 ?                     新建方法 ?                     把要抽取的代码,直接复制到新方法中 ?                     根据需求调整参数 2  调整旧代码 ?                     注释原代码,给自己一个后悔的

转有关代码重构

转自:http://blog.csdn.net/weiky626/article/details/1602691 开发人员可能听到过"bad smell"这个词,这个词用在软件编码中是什么意思呢? 代码还有smell吗?当然没有,正如计算机病毒,bug等词一样,这只是个形象的说法.这个词在这里的意思是代码实现了需求,但是代码却不精炼,冗余,结构混乱,难读懂,难维护,难扩展等等.与之相对应的一个词是"refactor",即代码重构.我们在看些外国人写的程序时可以发现,

代码重构实例之数据聚集

敏捷开发强调,要经常重构代码.在开发过程中,往往是开发和重构交替进行.短暂的重构,可以使得后续的开发维护更加容易.我觉得,代码重构可以分为逻辑重构和数据结构重构.数据结构的重构往往需要对代码进行多处改动:但是,数据结构的重构也可以为后续的开发维护带来更大的便利.这里就是一个数据结构重构的例子. 这是以前的一次代码重构经历,今天想起了,就记下来,帮助自己记忆.当然,既然是重构,总得承认自己写的第一版丑陋的代码. 为了方便描述,采用javascript来进行说明. 故事是这样的.刚开始,任务是画一些