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

上一篇文章[(一)一步步来开始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/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值