上一篇文章[(一)一步步来开始SSM基础框架搭建]中已经基本完成了SSM框架的搭建,这里测试下数据连通。

1、创建数据库表

这里我创建了一张图书馆的书籍表

简单填写了一下数据

DROP TABLE if EXISTS book;
CREATE TABLE `book` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(255) NOT NULL COMMENT '书名',`author` varchar(255) NOT NULL COMMENT '作者',`publisher` varchar(255) NOT NULL COMMENT '出版社',`stock` varchar(255) NOT NULL COMMENT '库存',PRIMARY KEY (`id`)
);
ALTER TABLE book comment '书籍表';INSERT INTO `book` VALUES ('1', '书名1', '作者1', '出版社1', '10');
INSERT INTO `book` VALUES ('2', '书名2', '作者2', '出版社2', '15');
INSERT INTO `book` VALUES ('3', '书名3', '作者3', '出版社3', '6');
INSERT INTO `book` VALUES ('4', '书名4', '作者4', '出版社4', '81');

2、类相关代码

com.libraryManage.model.Book
package com.libraryManage.model;public class Book {private long id;private String name;private String author;private String publisher;private int stock;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getPublisher() {return publisher;}public void setPublisher(String publisher) {this.publisher = publisher;}public int getStock() {return stock;}public void setStock(int stock) {this.stock = stock;}}
BookDao.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="com.libraryManage.dao.IBookDao"><select id="selectBook" resultType="com.libraryManage.model.Book" parameterType="long">SELECT * FROM book WHERE id=#{id}</select>
</mapper>
com.libraryManage.dao.IBookDao
package com.libraryManage.dao;import com.libraryManage.model.Book;
import org.springframework.stereotype.Repository;@Repository
public interface IBookDao {Book selectBook(long id);
}
com.libraryManage.service.IBookService
package com.libraryManage.service;import com.libraryManage.model.Book;
import org.springframework.stereotype.Repository;@Repository("bookService")
public interface IBookService {Book selectBook(long bookId);
}
com.libraryManage.service.impl.BookServiceImpl
package com.libraryManage.service.impl;import com.libraryManage.dao.IBookDao;
import com.libraryManage.model.Book;
import com.libraryManage.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service("bookService")
public class BookServiceImpl implements IBookService {@Autowiredprivate IBookDao bookDao;@Overridepublic Book selectBook(long bookId) {return bookDao.selectBook(bookId);}
}
com.libraryManage.controller.BookController
package com.libraryManage.controller;import com.fasterxml.jackson.databind.ObjectMapper;
import com.libraryManage.model.Book;
import com.libraryManage.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@Controller
@RequestMapping("/book")
public class BookController {@Autowiredprivate IBookService bookService;@RequestMapping("/showBook.do")public void selectBook(HttpServletRequest request, HttpServletResponse response) throws IOException {request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");long bookId = Long.parseLong(request.getParameter("id"));Book book = this.bookService.selectBook(bookId);ObjectMapper mapper = new ObjectMapper();response.getWriter().write(mapper.writeValueAsString(book));response.getWriter().close();}}

3、测试

新建一个测试类IBookDaoTest在test.java.com.libraryManage.dao文件夹下

package com.libraryManage.dao;import com.libraryManage.model.Book;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-mvc.xml","classpath:spring-mybatis.xml"})
public class IBookDaoTest {@Autowiredprivate IBookDao dao;@Testpublic void testSelectBook() throws Exception {long id = 1l;Book book = dao.selectBook(id);System.out.println(book.getName());}}

右键run

运行成功应该是在控制台打印出书名

在代码运行过程中遇到了两个问题,这里记录下mybatis连接数据库时报错、连接mysql时报错The server time zone value

新建页面index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>test</title>
</head>
<script>function selectUser() {var xmlHttp = new XMLHttpRequest();xmlHttp.onreadystatechange = function (ev) {if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {document.getElementById("test").innerHTML = xmlHttp.responseText;}}xmlHttp.open("POST", "book/showBook.do", true);xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");xmlHttp.send("id=1");}
</script>
<body><p id="test">Hello World!</p><button type="button" onclick="selectUser()">onclick test</button>
</body>
</html>

4、运行

先对idea进行Tomcat配置,Tomcat下载地址

Run ->  Edit Configurations

点击保存后Tomcat就配置成功

选择项目Run,看到控制台正常启动,可以访问了。

像上面的配置下,访问的路由是:http://localhost:8080/library/

(二)一步步来开始SSM:数据连通测试相关推荐

  1. (三)一步步来开始SSM:拦截器实现

    上一篇文章[(二)一步步来开始SSM:数据连通测试] 1.拦截器类 在项目中新建一个文件夹filter,创建一个编码拦截器EncodingFilter实现HandlerInterceptor接口,所有 ...

  2. java二维码生成 使用SSM框架 搭建属于自己的APP二维码合成、解析、下载

    java二维码生成 使用SSM框架 搭建属于自己的APP二维码合成.解析.下载 自己用java搭建一个属于自己APP二维码合成网站.我的思路是这样的: 1.用户在前台表单提交APP的IOS和Andro ...

  3. numpy使用[]语法索引二维numpy数组中指定数据行的数值内容(accessing the specific row in numpy array)

    numpy使用[]语法索引二维numpy数组中指定数据行的数值内容(accessing the specific row in numpy array) 目录 numpy使用[]语法索引二维numpy ...

  4. numpy使用[]语法索引二维numpy数组中指定数据列的数值内容(accessing the specific column in numpy array)

    numpy使用[]语法索引二维numpy数组中指定数据列的数值内容(accessing the specific column in numpy array) 目录 numpy使用[]语

  5. cuda二维数组内存分配和数据拷贝

    uda二维数组内存分配和数据拷贝 2016-04-20 10:54 138人阅读 评论(0) 收藏 举报 分类: 机器学习(11) 人工智能(9) 版权声明:本文为博主原创文章,允许转载. 因为cud ...

  6. C语言试题四十六之将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

    1. 题目 请编写一个函数function,它的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试 ...

  7. 300多个地级市GDP及第一、二、三产业占比数据(1990-2021年)

    300多个地级市GDP及第一.二.三产业占比数据(1990-2021年) 梳理了2021年普通地级市GDP30强,其中有26个城市GDP总量超过了5000亿元,更有6个城市超过了万亿元,分别是苏州.无 ...

  8. 获取二维元组的每一维数据

    获取二维元组的每一维数据 # python 2022/11/21/00:18 danci =(['剔透', '柔润', '柔滑', '无瑕', '透亮', '晶莹', '清透', '双唇', '紧实' ...

  9. 如何在二维码下面显示对应数据

    在使用条码二维码软件制作标签时,经常见到的条形码下面是有对应数据的,但是二维码是没有自带显示数据的,那么如果我们想要使二维码也显示同样的数据该如何操作呢,下面我们就中琅二维码软件来看下具体如何操作? ...

  10. 二维数组中查找指定数据

    二维数组中查找指定数据 数组中元素每行按照从左到右递增,每列从上到下递增 bool Find(int* arr, int rows, int columns, int data) {bool foun ...

最新文章

  1. python格式化字符串漏洞_Python新型字符串格式漏洞分析及解决方案
  2. 设计模式之_工厂系列_02
  3. C++设计模式之桥接模式
  4. java super是什么意思_java中Super到底是什么意思?必须举例说明!
  5. 3d打印英语文献_锐医学院 | 只需10分钟!解读康复医学文献+英语学习
  6. SQL SERVER 的SQL语句优化方式小结
  7. html前台检验特殊字符正则,【Qt编程】html特殊字符及正则表达式
  8. Posix共享内存区
  9. 西门子plm_西门子PLM副总裁:NX,智能的CAD平台
  10. 人工智能修复古董纪录片,还原1920年的北京城生活
  11. UI实用素材|购物车界面不同设计,可临摹的好模板
  12. vb里面计算误差咱们解决_盘点3dmax渲染出来是黑色的6个原因及解决方法
  13. 51CTO下载中心资源上传协议
  14. Linux学习第八篇之文件搜索命令find、locate、which、whereis、grep
  15. Eclipse 下html语法高亮插件——HTML Editor
  16. 代数拓扑\集合拓扑\代数拓扑\拓扑关系\拓扑结构_笔记
  17. 3DMax游戏建模常用基本命令
  18. mfc 程序图标变模糊_怎么把模糊的图片变清晰
  19. Don’t Just Assume; Look and Answer: Overcoming Priors for Visual Question Answering——论文阅读笔记
  20. 【一】情感对话 Towards Emotional Support Dialog Systems 论文阅读

热门文章

  1. 阿里云 禁用密码登录
  2. python中的cols_Python numpy.ma.mask_cols()用法及代码示例
  3. 金蝶K3提取供应商信息生成在线Web页面供应商信息一览表
  4. 常用复合逻辑运算,与非,或非,异或,同或
  5. 华为认证大数据工程师 HCIA-Big Data V3.5(中文版) 发布通知
  6. 跨境必看:跨境支付问题以及热门跨境支付方式的优劣势分析!
  7. MATLAB将csv文件转换成mat文件
  8. (js队列,堆栈) (FIFO,LIFO)
  9. RDLC报表金额数字转大写
  10. 信创大事件 | 2022“国民云计算品牌”正式放榜