Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

一个简单的基于SSM整合起来的图书管理系统demo

Notifications You must be signed in to change notification settings

NaivePerdant/SSM_Build

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

3 Commits

Repository files navigation

SSM 快速整合 图书管理系统 demo

整合 Mybatis

1 建立数据库

CREATE DATABASE `ssmbuild`;
USE `ssmbuild`;
DROP TABLE IF EXISTS `books`;
CREATE TABLE `books` (
 `bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',
 `bookName` VARCHAR(100) NOT NULL COMMENT '书名',
 `bookCounts` INT(11) NOT NULL COMMENT '数量',
 `detail` VARCHAR(200) NOT NULL COMMENT '描述',
 KEY `bookID` (`bookID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES
(1,'Java',1,'从入门到放弃'),
(2,'MySQL',10,'从删库到跑路'),
(3,'Linux',5,'从进门到进牢');

2 maven 导入依赖

<!-- 依赖 -->
 <dependencies>
 <!--Junit-->
 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.12</version>
 </dependency>
 <!--数据库驱动-->
 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.47</version>
 </dependency>
 <!-- 数据库连接池 -->
 <dependency>
 <groupId>com.mchange</groupId>
 <artifactId>c3p0</artifactId>
 <version>0.9.5.2</version>
 </dependency>
 <!--Servlet - JSP -->
 <dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>servlet-api</artifactId>
 <version>2.5</version>
 </dependency>
 <dependency>
 <groupId>javax.servlet.jsp</groupId>
 <artifactId>jsp-api</artifactId>
 <version>2.2</version>
 </dependency>
 <dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>jstl</artifactId>
 <version>1.2</version>
 </dependency>
 <!--Mybatis-->
 <dependency>
 <groupId>org.mybatis</groupId>
 <artifactId>mybatis</artifactId>
 <version>3.5.2</version>
 </dependency>
 <dependency>
 <groupId>org.mybatis</groupId>
 <artifactId>mybatis-spring</artifactId>
 <version>2.0.2</version>
 </dependency>
 <!--Spring-->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-webmvc</artifactId>
 <version>5.1.9.RELEASE</version>
 </dependency>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-jdbc</artifactId>
 <version>5.1.9.RELEASE</version>
 </dependency>
 <!-- Lombok -->
 <dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <version>1.18.12</version>
 <scope>provided</scope>
 </dependency>
 </dependencies>
 <!-- 静态资源导出 -->
 <build>
 <resources>
 <resource>
 <directory>src/main/java</directory>
 <includes>
 <include>**/*.properties</include>
 <include>**/*.xml</include>
 </includes>
 <filtering>false</filtering>
 </resource>
 <resource>
 <directory>src/main/resources</directory>
 <includes>
 <include>**/*.properties</include>
 <include>**/*.xml</include>
 </includes>
 <filtering>false</filtering>
 </resource>
 </resources>
 </build>

3 配置 Mybatis

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
 <!-- 第 8 步 才来写的-->
 <!-- 别名 -->
 <typeAliases>
 <package name="com.perdant.pojo"/>
 </typeAliases>
 
 <!-- 映射 -->
 <mappers>
 <mapper class="com.perdant.dao.BooksMapper"/>
 </mappers>
</configuration>

4 配置 Spring

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

5 配置 database

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456

6 写实体类

package com.perdant.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {
 private int bookID;
 private String bookName;
 private int bookCounts;
 private String detail;
}

7 写 dao 层的 mapper 接口

package com.perdant.dao;
import com.perdant.pojo.Books;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface BooksMapper {
 //增加一个Book
 int addBook(Books books);
 //根据id删除一个Book
 int deleteBookById(@Param("bookID") int id);
 //更新Book
 int updateBook(Books books);
 //根据id查询,返回一个Book
 Books queryBookById(@Param("bookID") int id);
 //查询全部Book,返回list集合
 List<Books> queryAllBook();
}

8 写 mapper 对应的 xml 返回 3 配置 mybatis xml 中添加别名和注册 mapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.perdant.dao.BooksMapper">
 <!--增加一个Book-->
 <insert id="addBook" parameterType="Books">
 insert into books (bookName,bookCounts,detail)
 values (#{bookName},#{bookCounts},#{detail})
 </insert>
 <!--根据id删除一个Book-->
 <delete id="deleteBookById">
 delete from books where bookID = #{bookID}
 </delete>
 <!--更新Book-->
 <update id="updateBook" parameterType="Books">
 update books
 set bookName = #{bookName},bookCounts=#{bookCounts},detail=#{detail}
 where bookID = #{bookID}
 </update>
 <!--根据id查询,返回一个Book-->
 <select id="queryBookById" resultType="Books">
 select * from books where bookID = #{bookID}
 </select>
 <!--查询全部Book-->
 <select id="queryAllBook" resultType="Books">
 SELECT * from books
 </select>
</mapper>

9 写 service 层 service 接口 和 实现类 实际调用的 mapper 方法

package com.perdant.service;
import com.perdant.pojo.Books;
import java.util.List;
public interface BooksService {
 //增加一个Book
 int addBook(Books books);
 //根据id删除一个Book
 int deleteBookById(int id);
 //更新Book
 int updateBook(Books books);
 //根据id查询,返回一个Book
 Books queryBookById(int id);
 //查询全部Book,返回list集合
 List<Books> queryAllBook();
}
package com.perdant.service;
import com.perdant.dao.BooksMapper;
import com.perdant.pojo.Books;
import java.util.List;
public class BooksServiceImpl implements BooksService {
 BooksMapper booksMapper;
 public void setBooksMapper(BooksMapper booksMapper) {
 this.booksMapper = booksMapper;
 }
 public int addBook(Books books) {
 return booksMapper.addBook(books);
 }
 public int deleteBookById(int id) {
 return booksMapper.deleteBookById(id);
 }
 public int updateBook(Books books) {
 return booksMapper.updateBook(books);
 }
 public Books queryBookById(int id) {
 return booksMapper.queryBookById(id);
 }
 public List<Books> queryAllBook() {
 return booksMapper.queryAllBook();
 }
}

整合 Spring

spring 整合 mybatis 新建 spring-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/context
 https://www.springframework.org/schema/context/spring-context.xsd">
 <!-- 配置整合mybatis -->
 <!-- 1.关联数据库文件 -->
 <context:property-placeholder location="classpath:database.properties"/>
 <!-- 2.数据库连接池 -->
 <!--数据库连接池
 dbcp 半自动化操作 不能自动连接
 c3p0 自动化操作(自动的加载配置文件 并且设置到对象里面)
 DriverManagerDataSource Spring 自带数据源
 -->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
 <!-- 配置连接池属性 -->
 <property name="driverClass" value="${jdbc.driver}"/>
 <property name="jdbcUrl" value="${jdbc.url}"/>
 <property name="user" value="${jdbc.username}"/>
 <property name="password" value="${jdbc.password}"/>
 <!-- c3p0连接池的私有属性 -->
 <property name="maxPoolSize" value="30"/>
 <property name="minPoolSize" value="10"/>
 <!-- 关闭连接后不自动commit -->
 <property name="autoCommitOnClose" value="false"/>
 <!-- 获取连接超时时间 -->
 <property name="checkoutTimeout" value="10000"/>
 <!-- 当获取连接失败重试次数 -->
 <property name="acquireRetryAttempts" value="2"/>
 </bean>
 <!-- 3.配置SqlSessionFactory对象 -->
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 <!-- 注入数据库连接池 -->
 <property name="dataSource" ref="dataSource"/>
 <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
 <property name="configLocation" value="classpath:mybatis-config.xml"/>
 </bean>
 <!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 
 <!--
 这是之前的方法一,这种方法需要一个 mapper 实现类,
 之前的所有操作都用 sqlSession 现在都用 sqlSessionTemplate 来完成,省去了getMapper那一步

 <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
 <constructor-arg index="0" ref="sqlSessionFactory"/>
 </bean>
 然后 把实现类注入bean
 <bean id="booksMapper" class="BooksMapperImpl">
 <property name="sqlSessionTemplate" ref="sqlSessionTemplate"/>
 </bean>

 或者 还有一种方法,将 mapper 的实现类 extends sqlSessionDaoSupport
 然后把 实现类 注入 spring 即可
 -->
 <!-- 这里我们在使用一种新的方法,动态代理的方式,不许哟写实现类了,解释 :https://www.cnblogs.com/jpfss/p/7799806.html-->
 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 <!-- 注入sqlSessionFactory -->
 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
 <!-- 给出需要扫描Dao接口包 不需要一个一个 xml 文件注入了 -->
 <property name="basePackage" value="com.kuang.dao"/>
 </bean>
</beans>

spring 整合 service层 新建 spring-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd">
 <!-- 扫描service相关的bean -->
 <context:component-scan base-package="com.perdant.service" />
 <!--BookServiceImpl注入到IOC容器中-->
 <bean id="BookServiceImpl" class="com.perdant.service.BooksServiceImpl">
 <property name="booksMapper" ref="booksMapper"/>
 </bean>
 <!-- 配置事务管理器 -->
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
 <!-- 注入数据库连接池 -->
 <property name="dataSource" ref="dataSource" />
 </bean>
</beans>

整合 SpringMVC

添加 web 项目结构 配置 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
 version="4.0">
 <!--DispatcherServlet-->
 <servlet>
 <servlet-name>DispatcherServlet</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <init-param>
 <param-name>contextConfigLocation</param-name>
 <!--一定要注意:我们这里加载的是总的配置文件,之前被这里坑了!-->
 <param-value>classpath:applicationContext.xml</param-value>
 </init-param>
 <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>DispatcherServlet</servlet-name>
 <url-pattern>/</url-pattern>
 </servlet-mapping>
 <!--encodingFilter-->
 <filter>
 <filter-name>encodingFilter</filter-name>
 <filter-class>
 org.springframework.web.filter.CharacterEncodingFilter
 </filter-class>
 <init-param>
 <param-name>encoding</param-name>
 <param-value>utf-8</param-value>
 </init-param>
 </filter>
 <filter-mapping>
 <filter-name>encodingFilter</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>
 <!--Session过期时间-->
 <session-config>
 <session-timeout>15</session-timeout>
 </session-config>
</web-app>

添加 配置 spring-mvc.xml 别忘了添加一个放 jsp 网页的目录

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd
 http://www.springframework.org/schema/mvc
 https://www.springframework.org/schema/mvc/spring-mvc.xsd">
 <!-- 配置SpringMVC -->
 <!-- 1.开启SpringMVC注解驱动 -->
 <mvc:annotation-driven />
 <!-- 2.静态资源默认servlet配置-->
 <mvc:default-servlet-handler/>
 <!-- 3.配置jsp 显示ViewResolver视图解析器 -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
 <property name="prefix" value="/WEB-INF/jsp/" />
 <property name="suffix" value=".jsp" />
 </bean>
 <!-- 4.扫描web相关的bean -->
 <context:component-scan base-package="com.perdant.controller" />
</beans>

整个框架整合完毕

开始写业务

编写 Controller 类 ,添加增删改查功能

package com.perdant.controller;
import com.perdant.pojo.Books;
import com.perdant.service.BooksService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Controller
@RequestMapping("/book")
public class BooksController {
 @Autowired
 @Qualifier("BooksServiceImpl")
 private BooksService booksService;
 @RequestMapping("/allBook")
 public String list(Model model){
 List<Books> list = booksService.queryAllBook();
 model.addAttribute("list",list);
 return "allBook";
 }
 @RequestMapping("/toAddBook")
 public String toAddPaper() {
 return "addBook";
 }
 @RequestMapping("/addBook")
 public String addPaper(Books books) {
 System.out.println(books);
 booksService.addBook(books);
 return "redirect:/book/allBook";
 }
 @RequestMapping("/toUpdateBook")
 public String toUpdateBook(Model model, int id) {
 Books books = booksService.queryBookById(id);
 System.out.println(books);
 model.addAttribute("book",books );
 return "updateBook";
 }
 @RequestMapping("/updateBook")
 public String updateBook(Model model, Books book) {
 System.out.println(book);
 booksService.updateBook(book);
 Books books = booksService.queryBookById(book.getBookID());
 model.addAttribute("books", books);
 return "redirect:/book/allBook";
 }
 @RequestMapping("/del/{bookId}")
 public String deleteBook(@PathVariable("bookId") int id) {
 booksService.deleteBookById(id);
 return "redirect:/book/allBook";
 }
}

写 JSP 页面 这里不贴了,都是复制黏贴的!!前端不会写

配置 tomcat 打war 包 注意:在 WEB-INF 中添加 lib 文件夹,把jar包全部导入进去!!

About

一个简单的基于SSM整合起来的图书管理系统demo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /