ssm框架之papersystem论文系统搭建(一)(图文)

一、创建所需文件夹target、java、resource等如图(一)所示

在这里插入图片描述
         图(一)

二、代码

2.1pojo.Paper:
package com.ssm.pojo;

public class Paper {
    private int paperId;
    private String paperName;
    private int paperNum;
    private String paperDetail;

    public int getPaperId() {
        return paperId;
    }

    public void setPaperId(int 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;
    }

    public Paper() {
    }

    public Paper(int paperId, String paperName, int paperNum, String paperDetail) {
        this.paperId = paperId;
        this.paperName = paperName;
        this.paperNum = paperNum;
        this.paperDetail = paperDetail;
    }

    public Paper(String paperName, int paperNum, String paperDetail) {
        this.paperName = paperName;
        this.paperNum = paperNum;
        this.paperDetail = paperDetail;
    }

    @Override
    public String toString() {
        return "Paper{" +
                "paperId=" + paperId +
                ", paperName='" + paperName + '\'' +
                ", paperNum=" + paperNum +
                ", paperDetail='" + paperDetail + '\'' +
                '}';
    }
}

2.2dao.PaperDao:
package com.ssm.dao;

import com.ssm.pojo.Paper;
import org.springframework.stereotype.Component;

import java.util.List;

@Component//spring框架注入jdbc
public interface PaperDao {
    // 1. 新增论文的持久层
    int insertPaper(Paper paper);

    // 2. 删除论文的持久层(根据paperid来删除)
    int deletePaper(int paperId);

    // 3. 修改论文的持久层(先把原来的数据paper进行加载,才可以修改,修改完之后保存 )
    int updatePaper(Paper paper);

    // 4. 通过固定条件查询(单查,这里是根据paperid查询,返回的是paper)
    Paper findPaperById(int paperId);

    // 5. 全查(返回的是List集合)
    List<Paper> findPapersByAll();

    // 6. 模糊查询(返回的也是List类型的集合体)
    List<Paper> findPapersByLike(String paperName);
}
2.3service.PaperService(与dao层唯一不同的点是注解不同这里是@service,dao层是@component):
package com.ssm.service;

import com.ssm.pojo.Paper;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface PaperService {
    // 1. 新增论文的持久层
    int insertPaper(Paper paper);

    // 2. 删除论文的持久层
    int deletePaper(int paperId);

    // 3. 修改论文的持久层
    int updatePaper(Paper paper);

    // 4. 通过固定条件查询
    Paper findPaperById(int paperId);

    // 5. 全查
    List<Paper> findPapersByAll();

    // 6. 模糊查询
    List<Paper> findPapersByLike(String paperName);
}
2.4service.impl.PaperServiceImpl:
package com.ssm.service.impl;

import com.ssm.dao.PaperDao;
import com.ssm.pojo.Paper;
import com.ssm.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//面向切面Aspect Oriented Programming(AOP),,注入dao层
    private PaperDao paperDao;

    public void setPaperDao(PaperDao paperDao) {
        this.paperDao = paperDao;
    }

    @Override
    public int insertPaper(Paper paper) {
        return 0;
    }

    @Override
    public int deletePaper(int paperId) {
        return 0;
    }

    @Override
    public int updatePaper(Paper paper) {
        return 0;
    }

    @Override
    public Paper findPaperById(int paperId) {
        return null;
    }

    @Override
    public List<Paper> findPapersByAll() {
        return null;
    }

    @Override
    public List<Paper> findPapersByLike(String paperName) {
        return null;
    }
}

2.5db.properties(实现jdbc的一层封装,性能优化写在Mybatis中包括连接池的数量,缓存的数量,最大连接数量,最小连接数量,超时等待等等)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/db_java1ssm?useSSL=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
2.6log4j.properties(日志文件为了避免Mybatis报错)
log4j.rootLogger=ERROR,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
2.7spring-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">

    <!-- 1.获取db.properties文件获取参数 -->
    <context:property-placeholder location="classpath:db.properties" />
    <!-- 2.获取dataSource数据源对象 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">//毁灭方法,自动关闭连接池
        <!-- 2.1配置连接池参数 -->
        <property name="driverClass" value="${jdbc.driver}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        <!-- 2.2优化连接池参数 -->
        <property name="maxPoolSize" value="30" />//最大连接数量30
        <property name="minPoolSize" value="10" />//最小连接数量10
        <!-- 关闭数据库连接后不自动提交 (手动提交作业)-->
        <property name="autoCommitOnClose" value="false" />
        <property name="checkoutTimeout" value="10000" />//超时等待,10之后跳出类似此网页不存在
        <property name="acquireRetryAttempts" value="3" />//没有响应之后,可在连接3次
    </bean>

    <!-- 3.整合Mybatis : 为了获取sqlSessionFactory对象(会话工厂) (spring是扫描器获取impl)-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 3.1注入数据库连接池 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 3.2获取mybatis配置文件:mybatis-config.xml -->
        <property name="configLocation" value="classpath:mybatis-config.xml" />
        <!-- 3.3扫描包,使用别名 返回的是pojo对象-->
        <property name="typeAliasesPackage" value="com.ssm.pojo" />
        <!-- 3.4获取mapper文件 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml" />
    </bean>

    <!-- 4.获取paperDao对象 : dao要与数据库打交道, -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        //流程:mybatis融到dao层里面,把dao层扫描出来放到service里面操作
        <property name="basePackage" value="com.ssm.dao" />
    </bean>



</beans>
2.8spring-service.xml(取service):
<?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">

    <!-- 1.扫描service包下的所有注解,让注解产生功能 -->
    <context:component-scan base-package="com.ssm.service" />

    <!-- 2.生成一个事务管理器对象产生事务管理transactionManager -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />//此处要添加依赖
    </bean>
    <!-- 3.事务管理操作 -->
    <tx:annotation-driven transaction-manager="transactionManager" />

    <!-- 4.生成service对象 -->
    <bean id="paperService" class="com.ssm.service.impl.PaperServiceImpl" />

</beans>
2.9mybatis-config.xml(固定写法,控制mybatis产生作用。识别mapper文件并取到sqlSesstionFactory)
<?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>
        <!-- 1.表字段自动增长列:自动增长 -->
        <setting name="useGeneratedKeys" value="true"/>
        <!-- 2.使用别名替换列名: 默认为true -->
        <setting name="useColumnLabel" value="true" />
        <!-- 3.命名规则定义为小驼峰法则 -->
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
    
</configuration>
3.0PaperMapper.xml(映射文件,操作交给mybatis即dao层,一个dao对应一个map文件,相当于impl,区别只写sql语句)
<?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.ssm.dao.PaperDao">
    <!-- 1.实现新增 -->
    <insert id="insertPaper" parameterType="Paper">
        insert into tb_paper(papername,papernum,paperdetail) values(#{paperName},#{paperNum},#{paperDetail})
    </insert>

    <!-- 2.实现删除 -->
    <delete id="deletePaper" parameterType="int">
        delete from tb_paper where paperid=#{paperId}
    </delete>

    <!-- 3.实现修改 -->
    <update id="updatePaper" parameterType="Paper">
        update tb_paper set papername=#{paperName},papernum=#{paperNum},paperdetail=#{paperDetail} where paperid=#{paperId}
    </update>

    <!-- 4.实现单查 -->
    <select id="findPaperById" parameterType="int" resultType="Paper">
        select papername as paperName,papernum as paperNum,paperdetail as paperDetail from tb_paper where paperid=#{paperId}
    </select>

    <!-- 5.实现全查 -->
    <select id="findPapersByAll" resultMap="paperResultMap">
        select * from tb_paper
    </select>

    <!-- 6.模糊查询 -->
    <select id="findPapersByLike" parameterType="String" resultMap="paperResultMap">
        select * from tb_paper where papername like '%${value}%'
    </select>

    <!-- 告诉mybatis返回数据应该是这样的 -->
    <resultMap id="paperResultMap" type="Paper">
        <id property="paperId" column="paperid" />
        <result property="paperName" column="papername" />
        <result property="paperNum" column="papernum" />
        <result property="paperDetail" column="paperdetail" />
    </resultMap>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值