通过自动回复机器人学Mybatis:MySQL脚本 + db >> dao >> service >> servlet
留着参考


makeData.sql
delimiter //
create procedure make_data()
begin
declare i int default ;
while i < do
insert into message values(i, 'a', 'b', 'c');
set i = i + ;
end while;
end;
// call make_data();
DROP PROCEDURE IF EXISTS make_data;
Message.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="Message"> <resultMap type="com.imooc.bean.Message" id="MessageResult">
<!-- 主键用id标签,其它的用result标签 -->
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="COMMAND" jdbcType="VARCHAR" property="command"/>
<result column="DESCRIPTION" jdbcType="VARCHAR" property="description"/>
<result column="CONTENT" jdbcType="VARCHAR" property="content"/>
</resultMap> <!-- Message.xml的目的:配置如下的sql语句让SqlSession读到并执行 -->
<!-- id是为了方便sqlSession调用,相同namespace下必须唯一 -->
<select id="queryMessageList" parameterType="com.imooc.bean.Message" resultMap="MessageResult">
select ID, COMMAND, DESCRIPTION, CONTENT from MESSAGE where 1=1
<!-- OGNL表达式,它不是Mybatis专有的,类似于EL表达式,#{}是Mybatis专有的 -->
<!-- 原: <if test="command != null && !"".equals(command.trim())"></if> -->
<if test="command != null and !"".equals(command.trim())">
and COMMAND=#{command}</if>
<if test="description != null and !"".equals(description.trim())">
and DESCRIPTION like '%' #{description} '%'</if>
</select> <delete id="deleteOne" parameterType="int">
delete from MESSAGE where ID = #{_parameter}
</delete> <delete id="deleteBatch" parameterType="java.util.List">
delete from MESSAGE where ID in (
<foreach collection="list" item="item" separator=",">
#{item}
</foreach>
)
</delete> </mapper>
访问数据库类
package com.imooc.db; import java.io.IOException;
import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; /**
* 访问数据库类
*/
public class DBAccess {
public SqlSession getSqlSession() throws IOException {
Reader reader = Resources.getResourceAsReader("com/imooc/config/Configuration.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
dao
package com.imooc.dao; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger; import com.imooc.bean.Message;
import com.imooc.db.DBAccess; public class MessageDao {
/**
* 根据查询条件获取消息列表
*/
public List<Message> queryMessageList(String command, String description) {
List<Message> messageList = new ArrayList<>(); DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
try {
sqlSession = dbAccess.getSqlSession();
// 通过sqlSession执行SQL语句
Message message = new Message();
message.setCommand(command);
message.setDescription(description); messageList = sqlSession.selectList("Message.queryMessageList", message);
} catch (IOException e) {
e.printStackTrace();
} finally {
// 如果中间发生异常sqlSession可能是null
if (sqlSession != null) {
sqlSession.close();
}
}
return messageList;
} /**
* 单条删除
*/
public void deletOne(int id) {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
try {
sqlSession = dbAccess.getSqlSession();
sqlSession.delete("Message.deleteOne", id);
sqlSession.commit(); // Mybatis不默认提交
// JDBC默认自动提交,除非setAutoCommit(false)
// 这个时候姐需要conn.commit()提交事务
// 可以通过conn.rollback([Savepoint savepoint])回滚
} catch (IOException e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
} /**
* 删除多条消息
*/
public void deleteBatch(List<Integer> ids) {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
try {
sqlSession = dbAccess.getSqlSession();
sqlSession.delete("Message.deleteBatch", ids);
sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
} public static void main(String[] args) {
MessageDao messageDao = new MessageDao();
messageDao.queryMessageList("", "");
}
}
service
MaintainService.java
package com.imooc.service; import java.util.ArrayList;
import java.util.List; import com.imooc.dao.MessageDao; /**
* 维护相关的业务功能
*/
public class MaintainService {
/**
* 删除单条信息
*/
public void deleteOne(String id) {
// servlet负责接收页面的值、向页面传值
// service负责接收servlet穿过来的值并对这个值进行处理,做业务的操作,算法等等
// 如果有需要调用相应的Dao
if (id != null && !"".equals(id.trim())) { // 这个逻辑判断实际还是不够的!
MessageDao messageDao = new MessageDao();
messageDao.deletOne(Integer.valueOf(id));
}
} /**
* 删除多条消息
*/
public void deleteBatch(String[] ids) {
MessageDao messageDao = new MessageDao();
List<Integer> idList = new ArrayList<>();
for (String id : ids) {
idList.add(Integer.valueOf(id));
}
messageDao.deleteBatch(idList);
}
}
QueryService.java
package com.imooc.service; import java.util.List; import com.imooc.bean.Message;
import com.imooc.dao.MessageDao;
import com.imooc.util.Iconst; /**
* 列表相关的业务功能
*/
public class QueryService {
/**
* 获取消息列表
*/
public List<Message> queryMessageList(String command, String description) {
MessageDao dao = new MessageDao();
return dao.queryMessageList(command, description);
} /**
* 通过指令查询
*/
public String queryByCommand(String command) {
MessageDao dao = new MessageDao();
List<Message> messageList;
// 用户输入帮助
if (Iconst.HELP_COMMAND.equals(command)) {
messageList = dao.queryMessageList(null, null);
StringBuilder result = new StringBuilder();
for (int i = 0; i < messageList.size(); ++i) {
if (i != 0) {
result.append("<br />");
}
result.append("回复[" + messageList.get(i).getContent() + "]可以查看" + messageList.get(i).getDescription());
}
return result.toString();
}
// 用户输入具体指令
messageList = dao.queryMessageList(command, null);
if (messageList.size() > 0) {
return messageList.get(0).getContent();
}
// 用户输入位置指令
return Iconst.NO_MATCHING_CONTENT;
}
}
servlet
后台方面:
package com.imooc.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.imooc.service.QueryService; /**
* 列表页面初始化控制
*/
@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);
// 查询消息列表并传给页面
QueryService listService = new QueryService();
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 {
this.doGet(req, resp);
}
}
package com.imooc.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.imooc.service.MaintainService; /**
* 单条删除控制层
*/
@SuppressWarnings("serial")
public class DeleteOneServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置编码
req.setCharacterEncoding("UTF-8");
// 接受页面的值
String id = req.getParameter("id");
MaintainService maintainService = new MaintainService();
maintainService.deleteOne(id);
// 页面跳转
req.getRequestDispatcher("/List.action").forward(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
package com.imooc.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.imooc.service.MaintainService; @SuppressWarnings("serial")
public class DeleteBatchServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置编码
req.setCharacterEncoding("UTF-8");
// 接受页面的值
String[] ids = req.getParameterValues("id");
MaintainService maintainService = new MaintainService();
maintainService.deleteBatch(ids);
// 页面跳转
req.getRequestDispatcher("/List.action").forward(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
前台方面:
package com.imooc.servlet; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* 对话页的初始化控制
*
*/
@SuppressWarnings("serial")
public class InitTalkServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置编码
req.setCharacterEncoding("UTF-8");
// 页面跳转
req.getRequestDispatcher("/WEB-INF/jsp/front/talk.jsp").forward(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
package com.imooc.servlet; import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.imooc.service.QueryService; /**
* 自动回复功能控制层,
* 针对AJAX的
*/
@SuppressWarnings("serial")
public class AutoReplyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
QueryService queryService = new QueryService();
out.write(queryService.queryByCommand(req.getParameter("content")));
out.flush();
out.close();
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doGet(req, resp);
}
}

通过自动回复机器人学Mybatis:MySQL脚本 + db >> dao >> service >> servlet的更多相关文章
- 通过自动回复机器人学Mybatis:搭建核心架构
imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 MessageDao.java package com.imooc.dao; impor ...
- 通过自动回复机器人学Mybatis 笔记:接口式编程
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
- 通过自动回复机器人学Mybatis笔记:接口式编程
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
- 通过自动回复机器人学Mybatis:代码重构(分层)
imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 ListServlet.java package com.imooc.servlet; ...
- 通过自动回复机器人学Mybatis:OGNL+log4j.properties
imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 OGNL规则: 从哪里取?(作用域.取值范围,例如封装入一个对象,该对象就是取值范围) ...
- 通过自动回复机器人学Mybatis:原始版本(包括JDBC、pom.xml等)
imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 list.jsp <%@ page contentType="text/ ...
- Spring+Mybatis+MySql+Maven 简单的事务管理案例
利用Maven来管理项目中的JAR包,同时使用Spring在业务处理层进行事务管理.数据库使用MySq,数据处理层使用Spring和Mybatis结合. 本案例代码主要结构如图: 1.数据库脚本 -- ...
- springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解
@_@ 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) myba ...
- SpringMVC+Spring+mybatis项目从零开始--Spring mybatis mysql配置实现
上一章我们把SSM项目结构已搭建(SSM框架web项目从零开始--分布式项目结构搭建)完毕,本章将实现Spring,mybatis,mysql等相关配置. 1. 外部架包依赖引入 外部依赖包引入 ...
随机推荐
- 从TCP三次握手说起–浅析TCP协议中的疑难杂症(2)
版权声明:本文由黄日成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/108 来源:腾云阁 https://www.qclo ...
- 使用MAT分析Java内存
Overview MAT(Memory Analyzer Tool) 是一个JAVA Heaper分析器,可以用来分析内存泄露和减少内存消耗.分析Process showmap中的/dev/ashme ...
- Sun公司的产品AnswerBook存在多种漏洞
一.未授权管理脚本访问漏洞: 1.受影响版本: Sun-AnswerBook2 1.2-1.4.2 2.攻击测试手段 http://a.b.c.d:8888/ab2/@AdminViewErr ...
- C语言实现日历输出
这个还是挺实用的.... 头文件: #ifndef MAIN_H #define MAIN_H #include "stdio.h" #include "math.h&q ...
- PHP新版本变化
世界变化真快,突然听闻 PHP 都到 7.3 版本了,7.2 还没仔细了解过呢.看到我司面试时会问到php新版本有什么特性,美名其曰考察其学习新技术的能力,我有点汗颜,自己都没有主动去了解过,实在不应 ...
- HDU_2888_Check Corners
Check Corners Time Limit: 2000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- Elasticsearch之settings和mappings(图文详解)
Elasticsearch之settings和mappings的意义 简单的说,就是 settings是修改分片和副本数的. mappings是修改字段和类型的. 记住,可以用url方式来操作它们,也 ...
- Django权限系统auth模块详解
转自:原文出处 auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理. auth可以和admin模块配合使用, 快速建立网站的管理系统. 在INSTALLED_A ...
- 在Silverlight 5 项目中创建单元测试项目
下载安装Silverlight ToolKit:测试框架程序集路径:C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Toolkit\dec ...
- linux 的nohup & 和daemon 总结(转)
add by zhj:守护进程貌似跟nohup + &方式启动的进程差不多.都可以实现与终端的无关联. 原文:http://blog.csdn.net/lovemdx/article/de ...