MyBatis(一) 不使用MyBatis做一个简单的查询

来源:互联网 发布:scala java 对比 编辑:程序博客网 时间:2024/06/05 06:23


整体框架




list.jsp


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><%@ page isELIgnored="false" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%String path = request.getContextPath();String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";%><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta http-equiv="X-UA-Compatible"content="IE=9; IE=8; IE=7; IE=EDGE" /><title>内容列表页面</title><link href="<%=basePath %>resources/css/all.css" rel="stylesheet" type="text/css" /></head><body style="background: #e1e9eb;"><form action="<%=basePath %>List.action" id="mainForm" method="post"><div class="right"><div class="current">当前位置:<a href="javascript:void(0)" style="color:#6E6E6E;">内容管理</a> > 内容列表</div><div class="rightCont"><p class="g_title fix">内容列表 <a class="btn03" href="#">新 增</a>    <a class="btn03" href="#">删 除</a></p><table class="tab1"><tbody><tr><td width="90" align="right">指令名称:</td><td><input name="command" type="text" class="allInput" value="${command }"/></td><td width="90" align="right">描述:</td><td><input name="description" type="text" class="allInput" value="${description }"/></td>                            <td width="85" align="right"><input type="submit" class="tabSub" value="查 询" /></td>       </tr></tbody></table><div class="zixun fix"><table class="tab2" width="100%"><tbody><tr>    <th><input type="checkbox" id="all" onclick="#"/></th>    <th>序号</th>    <th>指令名称</th>    <th>描述</th>    <th>操作</th></tr><c:forEach items="${messageList }" var="message" varStatus="status"><tr <c:if test="${status.index % 2 != 0 }">style='background-color:#ECF6EE'</c:if>><td><input type="checkbox" /></td><td>${status.index + 1 }</td><td>${message.command }</td><td>${message.description }</td><td><a href="#">修改</a>   <a href="#">删除</a></td></tr></c:forEach></tbody></table><div class='page fix'>共 <b>4</b> 条<a href='###' class='first'>首页</a><a href='###' class='pre'>上一页</a>当前第<span>1/1</span>页<a href='###' class='next'>下一页</a><a href='###' class='last'>末页</a>跳至 <input type='text' value='1' class='allInput w28' /> 页 <a href='###' class='go'>GO</a></div></div></div></div>    </form></body></html>


数据库脚本


CREATE TABLE `message` (  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',  `COMMAND` varchar(16) DEFAULT NULL COMMENT '指令名称',  `DESCRIPTION` varchar(32) DEFAULT NULL COMMENT '描述',  `CONTENT` varchar(2048) DEFAULT NULL COMMENT '内容',  PRIMARY KEY (`ID`)) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;


实体类

message.java

package com.example.bean;/** *  * Alt + Shift + J 添加注释的快捷键 *  * @author Jeremy_Lin *  * 与消息表对应的实体类 * */public class Message {// Ctrl + Shift + y 可以将大写转小写// 主键private String id;// 指令名称private String command;// 描述private String description;// 内容private String content;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getCommand() {return command;}public void setCommand(String command) {this.command = command;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}}




MessageDao.java

package com.example.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.example.bean.Message;/** *  * 和message表相关的数据库操作 *  * @author Jeremy_Lin * */public class MessageDao {/** * 根据查询条件查询消息列表 */public List<Message> queryMessageList(String command, String description) {List<Message> messageList = new ArrayList<Message>();try {Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/micro_message", "root", "root");// 直接写 select * 效率太低StringBuilder sql = new StringBuilder("select ID, COMMAND, DESCRIPTION, CONTENT from MESSAGE where 1 = 1");List<String> paramList = new ArrayList<String>();if (command != null && !"".equals(command.trim())) {sql.append(" and COMMAND=? ");paramList.add(command);}if (description != null && !"".equals(description.trim())) {sql.append(" and DESCRIPTION like '%' ? '%'");paramList.add(description);}PreparedStatement statement = conn.prepareStatement(sql.toString());for (int i = 0; i < paramList.size(); i++) {// sql出现的? 从第一个开始计数statement.setString(i + 1, paramList.get(i));}ResultSet rs = statement.executeQuery();while (rs.next()) {Message message = new Message();// 放的是引用 不是对象本身 所以接下来对其的操作依然是有效的messageList.add(message);message.setId(rs.getString("ID"));message.setCommand(rs.getString("COMMAND"));message.setDescription(rs.getString("DESCRIPTION"));message.setContent(rs.getString("CONTENT"));}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return messageList;}}


ListService.java

package com.example.service;import java.util.List;import com.example.bean.Message;import com.example.dao.MessageDao;/** *  * 列表相关的业务功能 *  * @author Jeremy_Lin * */public class ListService {public List<Message> queryMessageList(String command, String description) {MessageDao messageDao = new MessageDao();return messageDao.queryMessageList(command, description);}}


ListServlet.java

package com.example.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.example.service.ListService;/** *  * 列表页面初始化控制 *  * @author Jeremy_Lin * */@SuppressWarnings("serial")public class ListServlet extends HttpServlet {@Overrideprotected 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);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {this.doGet(req, resp);}}


源码地址:点击打开链接



原创粉丝点击