MyBatis实战——自动回复机器人

案例分析

基本功能

  • 接收发送指令
  • 根据指令自动回复对应内容

模块划分

  • 回复内容维护
  • 对话功能
  • 回复内容列表
  • 回复内容删除

MyBatis的下载和核心架构的搭建

  下载地址:https://github.com/mybatis/mybatis-3/releases/tag/mybatis-3.2.8

    下载需要的jar包和源码包。在源码包中提供了官方的示例教程,核心配置文件在mybatis-3-mybatis-3.2.8\src\test\java\org\apache\ibatis\submitted\complex_property\Configuration.xml,在src目录下新建一个config目录,存放此配置文件:

  打开此配置文件,可以发现它将原来的JDBC中的驱动等配置到了这个文件中,我们只需要仿照它的格式配置我们自己的jdbc相关信息:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4     "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5
 6 <configuration>
 7
 8 <!--
 9   <settings>
10     <setting name="useGeneratedKeys" value="false"/>
11     <setting name="useColumnLabel" value="true"/>
12   </settings>
13
14   <typeAliases>
15     <typeAlias alias="UserAlias" type="org.apache.ibatis.submitted.complex_property.User"/>
16   </typeAliases>
17 -->
18
19   <environments default="development">
20     <environment id="development">
21       <transactionManager type="JDBC">
22         <property name="" value=""/>
23       </transactionManager>
24       <!--
25       <dataSource type="UNPOOLED">
26         <property name="driver" value="org.hsqldb.jdbcDriver"/>
27         <property name="url" value="jdbc:hsqldb:mem:complexprop"/>
28         <property name="username" value="sa"/>
29       </dataSource>
30       -->
31       <!-- 替换成我们自己的JDBC驱动、URL、用户名和密码 -->
32       <dataSource type="UNPOOLED">
33         <property name="driver" value="org.gjt.mm.mysql.Driver"/>
34         <property name="url" value="jdbc:mysql://localhost:3306/mybatisrobot?characterEncoding=utf8"/>
35         <property name="username" value="root"/>
36         <property name="password" value="mysqladmin"/>
37       </dataSource>
38     </environment>
39   </environments>
40
41 <!--
42   <mappers>
43     <mapper resource="org/apache/ibatis/submitted/complex_property/User.xml"/>
44   </mappers>
45 -->
46 </configuration>

  以上的配置文件就已经修改完毕。

  Mybaits向DAO层提供的一个核心的对象是SqlSession。SqlSession的作用:

  1. 向SQL语句传入参数(向PreparedStatement的占位符中传入参数)。
  2. 执行SQL语句。
  3. 获取SQL语句执行的结果。
  4. 对事务的控制

如何获得SQLSession?

  1. 通过配置文件获取数据库连接的相关信息;
  2. 通过配置信息构建SqlSessionFactory;
  3. 通过SqlSessionFactory打开数据库会话(SqlSession就是和数据库进行交互的一次会话)。

在数据库层,我们新建一个DBAccess类:

 1 package org.gpf.db;
 2
 3 import java.io.IOException;
 4 import java.io.Reader;
 5
 6 import org.apache.ibatis.io.Resources;
 7 import org.apache.ibatis.session.SqlSession;
 8 import org.apache.ibatis.session.SqlSessionFactory;
 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10
11 /**
12  * 数据库访问层
13  * @author gaopengfei
14  * @date 2015-5-24 下午4:47:29
15  */
16 public class DBAccess {
17
18     public SqlSession getSqlSession() throws IOException{
19
20         // 通过配置文件获取数据库连接信息(路径从src的第一级子目录开始)
21         Reader reader = Resources.getResourceAsReader("org/gpf/config/Configuration.xml");
22         // 通过配置信息构建一个SqlSessionFactory
23         SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
24         // 通过SqlSessionFactory打开一个数据库会话
25         SqlSession sqlSession = factory.openSession();
26
27         return sqlSession;
28     }
29
30 }

  在DAO层,我们实例化DBAccess的一个实例。测试是否取得SqlSession。

 1 package org.gpf.dao;
 2
 3 import java.io.IOException;
 4 import java.util.List;
 5
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.gpf.bean.Message;
 8 import org.gpf.db.DBAccess;
 9
10 /**
11  * 和message表相关的操作
12  * @author gaopengfei
13  * @date 2015-5-25 上午10:52:19
14  */
15 public class MessageDAO {
16
17     /**
18      * 根据条件查询消息列表
19      * @param command
20      * @param description
21      * @return
22      */
23     public List<Message> queryMessagesList(String command,String description){
24
25         DBAccess dbAccess = new DBAccess();
26         SqlSession sqlSession = null;                // 放在外面,在finally中
27         try {
28             sqlSession = dbAccess.getSqlSession();    // 在DAO层进行异常处理
29             // 通过SqlSession执行SQL语句
30
31         } catch (IOException e) {
32             e.printStackTrace();
33         }finally{
34             if (sqlSession != null)
35                 sqlSession.close();
36         }
37         return null;
38     }
39
40     /**
41      * 测试是否取得SqlSession
42      * @param args
43      */
44     public static void main(String[] args) {
45         MessageDAO messageDAO = new MessageDAO();
46         messageDAO.queryMessagesList("", "");
47     }
48 }

  MyBatis和JDBC不一样,它不是将SQL语句写死在代码里面,也不是用Java代码来动态拼接SQL语句。MyBatis大部分的工作是在配置文件中。在官方的核心配置文件的同一目录下有一个配置SQL的配置文件User.xml.该配置文件的目的是将此文件中配置的SQL语句传递给SqlSession让它执行。拷贝该配置文件到我们自己的项目,重命名为Message.xml,删除不必要的部分,添加我们自己的SQL语句。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper
 3     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5
 6 <mapper namespace="User">
 7
 8   <resultMap type="UserAlias" id="UserResult">
 9     <id column="id" jdbcType="INTEGER" property="id"/>
10     <result column="username" jdbcType="VARCHAR" property="username"/>
11     <result column="password" jdbcType="VARCHAR" property="password.encrypted"/>
12     <result column="administrator" jdbcType="BOOLEAN" property="administrator"/>
13   </resultMap>
14
15   <select id="find" parameterType="long" resultMap="UserResult">
16     SELECT id,command,description,content FROM message
17   </select>
18
19 </mapper>

  

时间: 2024-07-28 14:10:48

MyBatis实战——自动回复机器人的相关文章

MyBatis实战

MyBatis简介 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. MyBatis快速上手 开发环境准备 说明,本系列教程所有的代码均是在Intellij Idea 16.02版本的IDE上编写的.

mybatis实战教程(mybatis in action),mybatis入门到精通

转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过hibernate了那这个就非常的简单) (再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看中文的:http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html) 写在这个系列前面的话: 以前曾经用过ibat

mybatis实战教程(mybatis in action)之一:开发环境搭建

文章转载自http://www.yihaomen.com/article/java/302.htm 什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想无论是用过的hibernate,myb

mybatis实战教程(mybatis in action),mybatis入门到精通(转)

转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过Hibernate了那这个就非常的简单) (再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看中文的:http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html) 写在这个系列前面的话: 以前曾经用过ibat

mybatis实战教程,mybatis入门到精通

转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过Hibernate了那这个就非常的简单) (再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看中文的:http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html) 写在这个系列前面的话: 以前曾经用过ibat

Python实现微信自动回复机器人详细教程

首先,我们需要安装并配置好Python环境,并安装requests和itchat包,我用的是Windows7环境!https://www.python.org/ python官网 下载 然后直接打开安装 选择path那个选项勾选(直接添加环境变量以及路径) 直接下一步直到安装完成运行 cmd 然后cmd命令行 输入 pip install itchat requests 等待安装完成现在我们已经安装完成了环境然后在桌面新建文本以.py结尾复制以下代码写入其中保存后运行KEY的值从图灵官网新建机器

MyBatis实战总结

什么是MyBatis? ORM工具及其思想 开发环境的搭建 什么是MyBatis? MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索. 使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. ORM工具及其思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 从配置文件(通常是X

手把手教你实现一个微信自动回复机器人

RebateBot 返利机器人 项目地址 项目描述 关键词: 返利 微信 阿里妈妈 机器人 跨平台 返利机器人,基于微信建立机器人通道与用户通过聊天快速生成返利链接 利用闲置微信和极小的电脑性能开启24小时无人轮值返利机器人 购物只需要发送链接给机器人,机器人能马上给你回复优惠价格及链接 功能实现 微信机器人 这个模块在这里可以看到最新的代码微信机器人 [x] 消息回调 [x] 自动回复消息 [x] 新增好友回调 [x] 默认同意新增好友 [x] 自动回复(文字,表情) 阿里妈妈 [x] 链接识

mybatis实战教程(mybatis in action)之六:与Spring MVC 的集成

前面几篇文章已经讲到了mybatis与spring 的集成.但这个时候,所有的工程还不是web工程,虽然我一直是创建的web 工程.今天将直接用mybatis与Spring mvc 的方式集成起来,源码在本文结尾处下载.主要有以下几个方面的配置1. web.xml 配置 spring dispatchservlet ,比如为:mvc-dispatcher2. mvc-dispatcher-servlet.xml 文件配置3. spring applicationContext.XML文件配置(与