一、项目框架
二、所有文件代码
2.1 Paper.java
package com. pojo;
public class Paper {
private long paperId;
private String paperName;
private int paperNum;
private String paperDetail;
public long getPaperId ( ) {
return paperId;
}
public void setPaperId ( long paperId) {
this . paperId = paperId;
}
public String getPaperName ( ) {
return paperName;
}
public void setPaperName ( String paperName) {
this . paperName = paperName;
}
public int getPaperNum ( ) {
return paperNum;
}
public void setPaperNum ( int paperNum) {
this . paperNum = paperNum;
}
public String getPaperDetail ( ) {
return paperDetail;
}
public void setPaperDetail ( String paperDetail) {
this . paperDetail = paperDetail;
}
}
2.2 PaperController.java
package com. controller;
import com. pojo. Paper;
import com. service. PaperService;
import org. springframework. beans. factory. annotation. Autowired;
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 ( "/paper" )
public class PaperController {
@Autowired
private PaperService paperService;
@RequestMapping ( "/allPaper" )
public String list ( Model model) {
List< Paper> list = paperService. queryAllPaper ( ) ;
model. addAttribute ( "list" , list) ;
return "allPaper" ;
}
@RequestMapping ( "toAddPaper" )
public String toAddPaper ( ) {
return "addPaper" ;
}
@RequestMapping ( "/addPaper" )
public String addPaper ( Paper paper) {
paperService. addPaper ( paper) ;
return "redirect:/paper/allPaper" ;
}
@RequestMapping ( "/del/{paperId}" )
public String deletePaper ( @PathVariable ( "paperId" ) Long id) {
paperService. deletePaperById ( id) ;
return "redirect:/paper/allPaper" ;
}
@RequestMapping ( "toUpdatePaper" )
public String toUpdatePaper ( Model model, Long id) {
model. addAttribute ( "paper" , paperService. queryById ( id) ) ;
return "updatePaper" ;
}
@RequestMapping ( "/updatePaper" )
public String updatePaper ( Model model, Paper paper) {
paperService. updatePaper ( paper) ;
paper = paperService. queryById ( paper. getPaperId ( ) ) ;
model. addAttribute ( "paper" , paper) ;
return "redirect:/paper/allPaper" ;
}
}
2.3 PaperDao.java
package com. dao;
import com. pojo. Paper;
import java. util. List;
public interface PaperDao {
int addPaper ( Paper paper) ;
int deletePaperById ( long id) ;
int updatePaper ( Paper paper) ;
Paper queryById ( long id) ;
List< Paper> queryAllPaper ( ) ;
}
2.4 PaperServer.java
package com. service;
import com. pojo. Paper;
import java. util. List;
public interface PaperService {
int addPaper ( Paper paper) ;
int deletePaperById ( long id) ;
int updatePaper ( Paper paper) ;
Paper queryById ( long id) ;
List< Paper> queryAllPaper ( ) ;
}
2.5 PaperServiceImpl.java
package com. service. impl;
import com. dao. PaperDao;
import com. pojo. Paper;
import com. service. PaperService;
import org. springframework. beans. factory. annotation. Autowired;
import org. springframework. stereotype. Service;
import java. util. List;
@Service
public class PaperServiceImpl implements PaperService {
@Autowired
PaperDao paperDao;
public int addPaper ( Paper paper) {
return paperDao. addPaper ( paper) ;
}
public int deletePaperById ( long id) {
return paperDao. deletePaperById ( id) ;
}
public int updatePaper ( Paper paper) {
return paperDao. updatePaper ( paper) ;
}
public Paper queryById ( long id) {
return paperDao. queryById ( id) ;
}
public List< Paper> queryAllPaper ( ) {
return paperDao. queryAllPaper ( ) ;
}
}
2.6 PaperMapper.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.dao.PaperDao" >
< resultMap type= "Paper" id= "paperResultMap" >
< id property= "paperId" column= "paper_id" / >
< result property= "paperName" column= "name" / >
< result property= "paperNum" column= "number" / >
< result property= "paperDetail" column= "detail" / >
< / resultMap>
< insert id= "addPaper" parameterType= "Paper" >
INSERT INTO paper ( paper_id, name, number, detail) VALUE ( #{ paperId} , #{ paperName} , #{ paperNum} , #{ paperDetail} )
< / insert>
< delete id= "deletePaperById" parameterType= "long" >
DELETE FROM paper WHERE paper_id= #{ paperID}
< / delete>
< update id= "updatePaper" parameterType= "Paper" >
UPDATE paper
SET NAME = #{ paperName} , NUMBER = #{ paperNum} , detail = #{ paperDetail}
WHERE paper_id = #{ paperId}
< / update>
< select id= "queryById" resultType= "Paper" parameterType= "long" >
SELECT paper_id, name, number, detail
FROM paper
WHERE paper_id= #{ paperId}
< / select>
< select id= "queryAllPaper" resultMap= "paperResultMap" >
SELECT paper_id, name, number, detail
FROM paper
< / select>
< / mapper>
2.7 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
http: / / www. springframework. org/ schema/ context/ spring- context. xsd">
< ! -- 配置整合mybatis过程 -- >
< ! -- 1. 配置数据库相关参数properties的属性:${ url} -- >
< context: property- placeholder location= "classpath:jdbc.properties" / >
< ! -- 2. 数据库连接池 -- >
< 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" / >
< ! -- 扫描pojo包 使用别名 -- >
< property name= "typeAliasesPackage" value= "com.pojo" / >
< ! -- 扫描sql配置文件: mapper需要的xml文件 -- >
< property name= "mapperLocations" value= "classpath:mapper/*.xml" / >
< / bean>
< ! -- 4. 配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -- >
< bean class = "org.mybatis.spring.mapper.MapperScannerConfigurer" >
< ! -- 注入sqlSessionFactory -- >
< property name= "sqlSessionFactoryBeanName" value= "sqlSessionFactory" / >
< ! -- 给出需要扫描Dao接口包 -- >
< property name= "basePackage" value= "com.dao" / >
< / bean>
< / beans>
2.8 spring-mvc.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">
< ! -- 配置整合mybatis过程 -- >
< ! -- 1. 配置数据库相关参数properties的属性:${ url} -- >
< context: property- placeholder location= "classpath:jdbc.properties" / >
< ! -- 2. 数据库连接池 -- >
< 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" / >
< ! -- 扫描pojo包 使用别名 -- >
< property name= "typeAliasesPackage" value= "com.pojo" / >
< ! -- 扫描sql配置文件: mapper需要的xml文件 -- >
< property name= "mapperLocations" value= "classpath:mapper/*.xml" / >
< / bean>
< ! -- 4. 配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -- >
< bean class = "org.mybatis.spring.mapper.MapperScannerConfigurer" >
< ! -- 注入sqlSessionFactory -- >
< property name= "sqlSessionFactoryBeanName" value= "sqlSessionFactory" / >
< ! -- 给出需要扫描Dao接口包 -- >
< property name= "basePackage" value= "com.dao" / >
< / bean>
< / beans>
2.9 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"
xmlns: tx= "http://www.springframework.org/schema/tx"
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/ tx
http: / / www. springframework. org/ schema/ tx/ spring- tx. xsd">
< ! -- 扫描service包下所有使用注解的类型 -- >
< context: component- scan base- package = "com.service" / >
< ! -- 配置事务管理器 -- >
< bean id= "transactionManager"
class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" >
< ! -- 注入数据库连接池 -- >
< property name= "dataSource" ref= "dataSource" / >
< / bean>
< ! -- 配置基于注解的声明式事务 -- >
< tx: annotation- driven transaction- manager= "transactionManager" / >
< / beans>
2.10 jdbc.properties
jdbc. driver= com. mysql. jdbc. Driver
jdbc. url= jdbc:mysql:
jdbc. username= root
jdbc. password= 123456
2.11 log4j.properties
log4j. rootLogger= ERROR, stdout
log4j. appender. stdout= org. apache. log4j. ConsoleAppender
log4j. appender. stdout. layout= org. apache. log4j. PatternLayout
log4j. appender. stdout. layout. ConversionPattern= % 5 p [ % t] - % m% n
2.12 mybatis-config.xml
< ? 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>
< ! -- 配置全局属性 -- >
< settings>
< ! -- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -- >
< setting name= "useGeneratedKeys" value= "true" / >
< ! -- 使用列别名替换列名 默认: true -- >
< setting name= "useColumnLabel" value= "true" / >
< ! -- 开启驼峰命名转换: Table{ create_time} - > Entity{ createTime} -- >
< setting name= "mapUnderscoreToCamelCase" value= "true" / >
< / settings>
< / configuration>
2.13 index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%
pageContext.setAttribute("path", request.getContextPath());
%>
首页
2.14 web.xml
< 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_3_1.xsd"
version = " 3.1" metadata-complete = " true" >
< display-name> Archetype Created Web Application display-name>
< servlet>
< servlet-name> dispatcher servlet-name>
< servlet-class> org.springframework.web.servlet.DispatcherServlet servlet-class>
< init-param>
< param-name> contextConfigLocation param-name>
< param-value> classpath:spring/spring-*.xml param-value>
init-param>
servlet>
< servlet-mapping>
< servlet-name> dispatcher servlet-name>
< url-pattern> / url-pattern>
servlet-mapping>
< 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>
web-app>
2.15 log4j.xml
< log4j: configuration xmlns: log4j= " http://jakarta.apache.org/log4j/" >
< appender name = " CORE" class = " org.apache.log4j.FileAppender" >
< param name = " File" value = " ${org.apache.cocoon.work.directory}/cocoon-logs/log4j.log" />
< param name = " Append" value = " false" />
< layout class = " org.apache.log4j.PatternLayout" >
< param name = " ConversionPattern" value = " %d %-5p %t %c - %m%n" />
layout>
appender>
< root>
< priority value = " ${org.apache.cocoon.log4j.loglevel}" />
< appender-ref ref = " CORE" />
root>
log4j: configuration>
2.16 applicationContext.xml
< beans xmlns = " http://www.springframework.org/schema/beans"
xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance"
xmlns: util= " http://www.springframework.org/schema/util"
xmlns: configurator= " http://cocoon.apache.org/schema/configurator"
xmlns: avalon= " http://cocoon.apache.org/schema/avalon"
xsi: schemaLocation= " http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
http://cocoon.apache.org/schema/configurator http://cocoon.apache.org/schema/configurator/cocoon-configurator-1.0.1.xsd
http://cocoon.apache.org/schema/avalon http://cocoon.apache.org/schema/avalon/cocoon-avalon-1.0.xsd" >
< configurator: settings/>
< bean name = " org.apache.cocoon.spring.configurator.log4j"
class = " org.apache.cocoon.spring.configurator.log4j.Log4JConfigurator"
scope = " singleton" >
< property name = " settings" ref = " org.apache.cocoon.configuration.Settings" />
< property name = " resource" value = " /WEB-INF/log4j.xml" />
bean>
< avalon: bridge/>
beans>
2.17 addPaper.jsp
<%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2018/4/7
Time: 16:45
To change this template use File | Settings | File Templates.
--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
新增论文
2.18 allPaper.jsp
<%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2018/4/6
Time: 16:57
To change this template use File | Settings | File Templates.
--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% String appPath = request.getContextPath(); %>
Paper列表
论文编号
论文名字
论文数量
论文详情
操作
${paper.paperId}
${paper.paperName}
${paper.paperNum}
${paper.paperDetail}
更改 |
删除
2.19 updatePaper.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
修改论文
三、演示结果