通过自动回复机器人学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);
}
}
通过自动回复机器人学Mybatis:代码重构(分层)的更多相关文章
- 通过自动回复机器人学Mybatis:MySQL脚本 + db >> dao >> service >> servlet
留着参考 makeData.sql delimiter // create procedure make_data() begin declare i int ; do insert into mes ...
- 通过自动回复机器人学Mybatis 笔记:接口式编程
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
- 通过自动回复机器人学Mybatis笔记:接口式编程
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
- 通过自动回复机器人学Mybatis:OGNL+log4j.properties
imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 OGNL规则: 从哪里取?(作用域.取值范围,例如封装入一个对象,该对象就是取值范围) ...
- 通过自动回复机器人学Mybatis:搭建核心架构
imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 MessageDao.java package com.imooc.dao; impor ...
- 通过自动回复机器人学Mybatis:原始版本(包括JDBC、pom.xml等)
imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 list.jsp <%@ page contentType="text/ ...
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十一) 代码重构使用反射工厂解耦
前言 自从此博客发表以及代码开源以来,得到了许多人的关注.也没许多吧,反正在我意料之外的.包括几位大牛帮我做订阅号推广,真的很感谢他们.另外,还有几个高手给我提了一些架构上的问题.其实本身这个项目是没 ...
- 让代码重构渐行渐远系列(3)——string.Equals取代直接比较与非比较
重构背景及原因 最近由于项目组的人员在不断扩充,导致项目中代码风格各异,大有百花齐放甚至怒放之势.考虑到团队的生存与发展,经过众人多次舌战之后,最终决定项目组根据业务分成几个小分队,以加强团队管理与提 ...
- C++代码重构——从C global到C++ template
在学数据结构的时候,我常有这样目标--写出能够最大程度复用的代码(算法正确,封装优秀).我常想--如何能在短时间内达成"算法正确,封装优秀"这样的目标.经过一段时间的摸索,我的结论 ...
随机推荐
- HTML特殊字符的html、js、css写法汇总
⇠ 箭头类 符号 UNICODE 符号 UNICODE HTML JS CSS HTML JS CSS ⇠ ⇠ \u21E0 \21E0 ⇢ ⇢ \u21E2 \2 ...
- 使用 Visual Studio 2015 编译 QT 工程
简单进行一下几步就可以了 1.下载源代码 qt-everywhere-opensource-src-5.6.0-alpha.7z .解压到 D:\ToolKits\5.6.0\src 目录下2.网站 ...
- 【BZOJ4543】[POI2014]Hotel加强版 长链剖分+DP
[BZOJ4543][POI2014]Hotel加强版 Description 同OJ3522数据范围:n<=100000 Sample Input 7 1 2 5 7 2 5 2 3 5 6 ...
- 云计算之路-阿里云上:SLB会话保持的一个坑
冒着被大家厌烦的风险,今天再发一篇“云计算之路-阿里云上”.这是在前一篇发过之后真实发生的事情,我们觉得定位问题的过程值得分享.而且估计园子里不少朋友被这个问题骚扰过,我们有责任让大家知道问题的真正原 ...
- HYSBZ 2160 拉拉队排练(回文树)
2160: 拉拉队排练 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 825 Solved: 324 [Submit][Status][Discu ...
- Java栈(Stack)和堆(Heap)
In the following code public void Method1() { int i = 4; int y = 2; class1 cls1 = new class1(); } He ...
- 7.Insert Methods-官方文档摘录
总结 列举insert插入方法 MongoDB provides the following methods for inserting documents into a collection: db ...
- 搜狐云景client工具评測之WordPress的搭建
搜狐云景是搜狐推出的一款PaaS产品,眼下还处在公測阶段,拿到邀请码后试用了一下,感觉还不错. 搜狐云景提供了四种方式部署应用,感觉应该能够满足各种口味的码农:1. zip包的形式在网页上传并部署 ...
- 你真的会用Gson吗?Gson使用指南
你真的会用Gson吗?Gson使用指南(一) 你真的会用Gson吗?Gson使用指南(二) 你真的会用Gson吗?Gson使用指南(三) 你真的会用Gson吗?Gson使用指南(四)
- ZeroMQ作者于昨天下午宣布选择安乐死
… printf("goodbye, world !");