什么是SSM框架:
SSM框架就是Spring、SpringMVC、MyBatis三个框架的整合,是标准的MVC模式,将整个系统划分为表现层、Controller层、Service层、Dao层三层。使用SpringMVC负责请求的转发和视图管理,Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎
简单介绍了下SSM,就直接上代码吧!
pom.xml
4.0.2.RELEASE
3.2.6
1.7.7
1.2.17
junit
junit
3.8.1
test
org.springframework
spring-core
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-oxm
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-test
${spring.version}
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.2.2
javax
javaee-api
7.0
mysql
mysql-connector-java
5.1.36
commons-dbcp
commons-dbcp
1.2.2
jstl
jstl
1.2
log4j
log4j
${log4j.version}
com.alibaba
fastjson
1.1.41
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
org.codehaus.jackson
jackson-mapper-asl
1.9.13
commons-fileupload
commons-fileupload
1.3.1
commons-io
commons-io
2.4
commons-codec
commons-codec
1.9
maven01
org.eclipse.jetty
jetty-maven-plugin
9.2.8.v20150217
80
shutdown
9966
web.xml
ssm_bookstore
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
bookstore
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath*:spring_MVC.xml
1
bookstore
/
contextConfigLocation
classpath*:application_Context.xml
org.springframework.web.context.ContextLoaderListener
spring_MVC.xml
application_context.xml
spring_mybatis.xml
书的实体类
package com.bs.admin.pojo;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
/**
*
* Title: Book
* Description: Book实体类
* @author Jack.Hu
* @date 2018年11月21日
*/
public class Book implements Serializable {
private static final long serialVersionUID = 597733879789573558L;
private Long primaryId;
private Long bookId;
private String bookName;
private Set authors = new HashSet(); // 作者与书,多对多
private String bookCategory; // 书的种类
private Long bookPurchasePrice; // 进价
private Long bookSalesPrice; // 售价
private String bookProfile; // 简介
private String bookCoverImage; // 图片路径
private Long publisherId; // 出版社id
private Long printId; // 印刷id
private Set activity = new HashSet(); // 活动与书多对多
public Book(){
}
public Book(Long primaryId, Long bookId, String bookName, Set authors, String bookCategory, Long bookPurchasePrice,Long bookSalesPrice, String bookProfile, String bookCoverImage, Long publisherId, Long printId, Set activity) {
this.primaryId = primaryId;
this.bookId = bookId;
this.bookName = bookName;
this.authors = authors;
this.bookCategory = bookCategory;
this.bookPurchasePrice = bookPurchasePrice;
this.bookSalesPrice = bookSalesPrice;
this.bookProfile = bookProfile;
this.bookCoverImage = bookCoverImage;
this.publisherId = publisherId;
this.printId = printId;
this.activity = activity;
}
@Override
public String toString() {
return "Book [主键:" + primaryId + ", 书号:" + bookId + ", 书名:" + bookName +", 作者:"+ authors + ", 种类:" + bookCategory + ", 进价:" + bookPurchasePrice + ", 售价:" + bookSalesPrice
+ ", 简介:" + bookProfile + ", 图片路径:" + bookCoverImage + ", 出版者id:" + publisherId + ", 印刷商id:" + printId +", 活动:" + activity + "]";
}
// .......忽略get set方法.......
}
作者的实体类
package com.bs.admin.pojo;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
/**
*
* Title: Author
* Description: 作者的实体类
* @author jack.Hu
* @date 2018年11月21日
*/
public class Author implements Serializable {
private static final long serialVersionUID = -2631951426846305889L;
private Integer authorId;
private String authorName;
private Set books = new HashSet();
public Author(){
}
public Author(Integer authorId, String authorName, Set books) {
this.authorId = authorId;
this.authorName = authorName;
this.books = books;
}
@Override
public String toString() {
return "Author [authorId=" + authorId + ", authorName=" + authorName + ", book:" + books +"]";
}
// .......忽略get set方法.......
}
BookMapper.xml
primary_id, b.book_id,b.book_name,b.book_category,b.book_purchasePrice,b.book_salesPrice,
b.book_profile,b.book_coverImage,b.publisher_id,b.print_id
a.author_id, a.author_name
BookMapper接口
package com.bs.admin.mapper;
import com.bs.admin.pojo.Book;
public interface BookMapper {
Book getBookByBookId(Long bookId);
Integer createBook(Book book);
}
接口
package com.bs.admin.dao;
import org.springframework.stereotype.Repository;
import com.bs.admin.pojo.Book;
@Repository
public interface BookDao {
Book retrieveBookByBookId(Long bookId);
}
实现类
package com.bs.admin.dao.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.bs.admin.dao.BookDao;
import com.bs.admin.mapper.BookMapper;
import com.bs.admin.pojo.Book;
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private BookMapper bm;
@Override
public Book retrieveBookByBookId(Long bookId) {
Book book = bm.getBookByBookId(bookId);
return book;
}
}
接口
package com.bs.admin.service;
import org.springframework.stereotype.Service;
import com.bs.admin.pojo.Book;
@Service
public interface BookService {
Book getBookByBookId(Long bookId);
}
实现类
package com.bs.admin.service.impl;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.bs.admin.dao.BookDao;
import com.bs.admin.dao.impl.BookDaoImpl;
import com.bs.admin.pojo.Book;
import com.bs.admin.service.BookService;
@Service
public class BookServiceImpl implements BookService{
@Autowired
private BookDao bd;
@Override
public Book getBookByBookId(Long bookId) {
Book book = bd.retrieveBookByBookId(bookId);
return book;
}
}
BookstoreController
package com.bs.admin.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bs.admin.pojo.Author;
import com.bs.admin.pojo.Book;
import com.bs.admin.service.AuthorService;
import com.bs.admin.service.BookService;
@RestController
@RequestMapping("bookstore")
public class BookstoreController {
@Autowired
private BookService bs;
@Autowired
private AuthorService as;
@GetMapping("{bookId}/getBook")
public @ResponseBody Book getBook(@PathVariable("bookId") Long bookId) {
Book book = bs.getBookByBookId(bookId);
System.out.println("book对象: " + book);
return book;
}
}