上一篇文章[(一)一步步来开始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 {
@Autowired
private IBookDao bookDao;
@Override
public 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 {
@Autowired
private 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 {
@Autowired
private IBookDao dao;
@Test
public 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/