Springboot快速开发-书本信息管理系统(项目源码)

这篇具有很好参考价值的文章主要介绍了Springboot快速开发-书本信息管理系统(项目源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【我后续会发一个资源包,里面是所有代码,数据库表设计也有,大学生可以直接用,导入数据库运行,再导入后端项目和前端项目,再去网页运行就好了,效果图下面有】

Springboot快速开发-书本信息管理系统(项目源码)

Springboot快速开发-书本信息管理系统(项目源码)

 Springboot快速开发-书本信息管理系统(项目源码)

1、考核要求:

  1. 数据库:MYSQL5.7+
  2. 后台技术:SpringBoot
  3. 前端技术:vue+elementui
  4. 代码简洁、有合理的注解,前面页面排版工整

2、考核注意事项:

1.运行sql脚本,创建数据库及书本表(根据我的实体类建表就可以了,整个项目可直接运行,跨域问题已处理,前后端的端口也已处理)

2.后台代码注意事项

        a.Maven地址的修改(修改成你自己的);

        b.依赖可能不在本地,需要联网重新下载;

        c.jdbc.properties设置,数据库相关配置:数据库名/账号/密码,请修改成自己电脑所对应的账号和密码。

        d.generatorConfig.xml设置:Ⅰ:修改classPathEntry配置,更换成本地maven仓库中mysql数据库jdbc驱动jar包的位置;Ⅱ:修改table配置表信息(tableName和domainObjectName),更换成考试中对应数据库表;Ⅲ:点击Edit Configurations...配置,添加Maven,输入命名:mybatis-gerenator:gerenate -e;

        e.application.yml设置:数据库相关设置:数据库名/帐号/密码,请修改成自己电脑对应的帐号和密码

        f.由于电脑tomcat以及jdk的安装位置不一样,请重新配置jdk和tomcat

        g.以上步骤完成,先不要写任何代码,先将web项目发布至tomcat并启动,如果首页访问成功,表示web项目部署成功,可以开始编写后台代码了

3.前端代码注意事项:

1.vue项目框架已搭建完成,为减小源码大小,相关模块已删除,运行项目前,请先进入vue项目根目录,使用npm install命令下载相关模块(此步骤需要联网)

2.项目启动后无需添加路由或*.vue文件,运行后会直接跳转到BookList.vue,在此vue文件中添加相关功能即可

3.开动

generatorConfig.xml、jdbc.properties、application.yml这三个配置文件我就不展示了,有需要的下载我的资源包

数据库表建好之后→导入前端(可以把需要的依赖先下载,然后干自己的事)→导入后端(进行我上面所说的那些后端操作)→写完代码运行后端→在写前端代码(运行前端)

以下是后端的代码:

Model层:Book

package com.zking.spboot.model;

public class Book {
    private Integer id;

    private String bookname;

    private Float price;

    private String booktype;

    public Book(Integer id, String bookname, Float price, String booktype) {
        this.id = id;
        this.bookname = bookname;
        this.price = price;
        this.booktype = booktype;
    }

    public Book() {
        super();
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getBookname() {
        return bookname;
    }

    public void setBookname(String bookname) {
        this.bookname = bookname;
    }

    public Float getPrice() {
        return price;
    }

    public void setPrice(Float price) {
        this.price = price;
    }

    public String getBooktype() {
        return booktype;
    }

    public void setBooktype(String booktype) {
        this.booktype = booktype;
    }
}

Mapper层:BookMapper

package com.zking.spboot.mapper;

import com.zking.spboot.model.Book;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface BookMapper {

    /**
     * 根据书本名称模糊查询
     * @param book
     * @return
     */
    List<Book> queryAll(Book book);

    int deleteByPrimaryKey(Integer id);

    int insert(Book record);

    int insertSelective(Book record);

    Book selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(Book record);

    int updateByPrimaryKey(Book record);
}

BookMapper.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.zking.spboot.mapper.BookMapper" >
  <resultMap id="BaseResultMap" type="com.zking.spboot.model.Book" >
    <constructor >
      <idArg column="id" jdbcType="INTEGER" javaType="java.lang.Integer" />
      <arg column="bookname" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="price" jdbcType="REAL" javaType="java.lang.Float" />
      <arg column="booktype" jdbcType="VARCHAR" javaType="java.lang.String" />
    </constructor>
  </resultMap>
  <sql id="Base_Column_List" >
    id, bookname, price, booktype
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from t_book
    where id = #{id,jdbcType=INTEGER}
  </select>
    <select id="queryAll" resultType="com.zking.spboot.model.Book">
      select <include refid="Base_Column_List"/> from t_book where 1=1
      <if test="null!=bookname and ''!=bookname">
        and bookname like concat('%',#{bookname},'%')
      </if>
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from t_book
    where id = #{id,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="com.zking.spboot.model.Book" >
    insert into t_book (id, bookname, price, 
      booktype)
    values (#{id,jdbcType=INTEGER}, #{bookname,jdbcType=VARCHAR}, #{price,jdbcType=REAL}, 
      #{booktype,jdbcType=VARCHAR})
  </insert>
  <insert id="insertSelective" parameterType="com.zking.spboot.model.Book" >
    insert into t_book
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        id,
      </if>
      <if test="bookname != null" >
        bookname,
      </if>
      <if test="price != null" >
        price,
      </if>
      <if test="booktype != null" >
        booktype,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        #{id,jdbcType=INTEGER},
      </if>
      <if test="bookname != null" >
        #{bookname,jdbcType=VARCHAR},
      </if>
      <if test="price != null" >
        #{price,jdbcType=REAL},
      </if>
      <if test="booktype != null" >
        #{booktype,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.zking.spboot.model.Book" >
    update t_book
    <set >
      <if test="bookname != null" >
        bookname = #{bookname,jdbcType=VARCHAR},
      </if>
      <if test="price != null" >
        price = #{price,jdbcType=REAL},
      </if>
      <if test="booktype != null" >
        booktype = #{booktype,jdbcType=VARCHAR},
      </if>
    </set>
    where id = #{id,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.zking.spboot.model.Book" >
    update t_book
    set bookname = #{bookname,jdbcType=VARCHAR},
      price = #{price,jdbcType=REAL},
      booktype = #{booktype,jdbcType=VARCHAR}
    where id = #{id,jdbcType=INTEGER}
  </update>
</mapper>

Service层:BookService

package com.zking.spboot.service;

import com.zking.spboot.model.Book;
import org.springframework.stereotype.Repository;

import java.util.List;

public interface BookService {

    /**
     * 根据书本名称模糊查询
     * @param book
     * @return
     */
    List<Book> queryAll(Book book);

    /**
     * 新增书本
     * @param record
     * @return
     */
    int insert(Book record);

}

impl层:BookServiceImpl

package com.zking.spboot.service.impl;

import com.zking.spboot.mapper.BookMapper;
import com.zking.spboot.model.Book;
import com.zking.spboot.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 实现类
 */
@Service
public class BookServiceImpl implements BookService {

    @Autowired
    private BookMapper bookMapper;

    @Override
    public List<Book> queryAll(Book book) {
        return bookMapper.queryAll(book);
    }

    @Override
    public int insert(Book record) {
        return bookMapper.insert(record);
    }


}

Controller层:BookController

package com.zking.spboot.controller;

import com.zking.spboot.model.Book;
import com.zking.spboot.service.BookService;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired
    private BookService bookService;

    @RequestMapping("/addBook")
    public JsonResponsBody<?> addBook(Book book){
        bookService.insert(book);
        return new JsonResponsBody<>();
    }

    @RequestMapping("/queryAll")
    public JsonResponsBody<List<Book>> queryAll(Book book){
        List<Book> books = bookService.queryAll(book);
        return new JsonResponsBody<>(200,"OK",books);
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    class JsonResponsBody<T>{
        private int code=200;
        private String mag="Ok";
        private T data;
    }
}

跨域问题处理:

package com.zking.spboot;

import org.apache.ibatis.annotations.Mapper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@MapperScan("com.zking.spboot.mapper")
@EnableTransactionManagement
@EnableAspectJAutoProxy
@SpringBootApplication
public class SpbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpbootApplication.class, args);
    }

}

以下是前端的代码:

前端接收后端的请求路径,src下面api下面的action.js

/**
 * 对后台请求的地址的封装,URL格式如下:
 * 模块名_实体名_操作
 */
export default {
	//服务器
	'SERVER': 'http://localhost:8080/spboot',
	'ADD':'book/addBook',
	'ALL':'book/queryAll',
	//获得请求的完整地址,用于mockjs测试时使用
	'getFullPath': k => {
		return this.SERVER + this[k];
	}
}

 前端src下面的router下面的index.js

import Vue from 'vue'
import Router from 'vue-router'
import BookList from '@/views/BookList'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'BookList',
      component: BookList
    }
  ]
})

前端页面:文章来源地址https://www.toymoban.com/news/detail-445555.html

<template>
	<div>
		<!-- <h1 align="center">SpringBoot阶段机试,ts={{ts}}</h1> -->
		<!-- 1.搜索栏 -->
		<el-form :inline="true">
			<el-form-item label="书本名称">
				<el-input v-model="bookname" placeholder="书本名称"></el-input>
			</el-form-item>
			<el-form-item>
				<el-button type="primary" @click="query">查询</el-button>
				<el-button type="primary" @click="open">新增</el-button>
			</el-form-item>
		</el-form>
		<!-- 2.数据表格 -->
		<el-table :data="tableData" style="width: 100%">
			<el-table-column prop="id" label="书本编号" width="180">
			</el-table-column>
			<el-table-column prop="bookname" label="书本名称" width="180">
			</el-table-column>
			<el-table-column prop="price" label="书本价格">
			</el-table-column>
			<el-table-column prop="booktype" label="书本类型">
			</el-table-column>
		</el-table>
		<!-- 3.弹出框 -->
		<el-dialog title="新增" :visible.sync="dialogFormVisible" @close="close">
			<el-form :model="book" :rules="rules" ref="book">
				<el-form-item prop="bookname" label="书本名称" label-width="90px">
					<el-input v-model="book.bookname" autocomplete="off"></el-input>
				</el-form-item>
				<el-form-item prop="price" label="书本价格" label-width="90px">
			  <el-input v-model="book.price" autocomplete="off"></el-input>
				</el-form-item>
				<el-form-item prop="booktype" label="书本类型" label-width="90px">
					<el-select style="width:100%;" v-model="book.booktype" placeholder="请选择书本类型">
						<el-option label="玄幻" value="玄幻"></el-option>
						<el-option label="文学" value="文学"></el-option>
					</el-select>
				</el-form-item>
			</el-form>
			<div slot="footer" class="dialog-footer">
				<el-button @click="dialogFormVisible = false">取 消</el-button>
				<el-button type="primary" @click="save">确 定</el-button>
			</div>
		</el-dialog>
	</div>
</template>

<script>
	export default {
		data: function() {
			return {
				ts: new Date().getTime(),
				bookname: '',
				tableData: [],
				dialogFormVisible: false,
				book: {
					bookname: '',
					price: '',
					booktype: ''
				},
				rules: {
					bookname: [{
						required: true,
						message: '请输入书本名称',
						trigger: 'blur'
				 }, ],
					price: [{
						required: true,
						message: '请输入书本价格',
						trigger: 'blur'
					}, ],
					booktype: [{
						required: true,
						message: '请选择书本类型',
						trigger: 'change'
					}, ]
				}
			};
		},
		methods: {
			close:function(){
				//清空表单数据
				this.book={
					bookname: '',
					price: '',
					booktype: ''
				};
				//清空表单验证
				this.$refs['book'].resetFields();
			},
			save: function() {
				this.$refs['book'].validate((valid) => {
					if (valid) {
						let url=this.axios.urls.ADD;
						this.axios.post(url,this.book).then(resp => {
							let data = resp.data; //data  -->  date  XXXXXX
							// {code:200,msg:'OK',data:[....]}
							if(data.code==200){
								//关闭弹出框
								this.dialogFormVisible=false;
								//再次查询列表方法
								this.query();
							}else{
								this.$message.error('新增失败!');
							}
						}).catch(err => {

						})
					} else {
						console.log('error submit!!');
						return false;
					}
				});
			},
			query: function() {
				//1.定义查询参数
				let params = {
					bookname: this.bookname
				};
				//2.获取请求路径
				let url = this.axios.urls.ALL;
				//3.发起ajax请求
				this.axios.post(url, params).then(resp => {
					let data = resp.data; //data  -->  date  XXXXXX
					// {code:200,msg:'OK',data:[....]}
					console.log(data);
					this.tableData = data.data;
				}).catch(err => {

				})
			},
			open: function() {
				this.dialogFormVisible = true;
			}
		}
	}
</script>

<style>
</style>

 以上就是今天的分享!!!

刚好有大学生找我帮忙写这个项目,我想可以与大家分享一下代码,有其他同行需要代码的也可以找我。感谢支持!

到了这里,关于Springboot快速开发-书本信息管理系统(项目源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 系统集成项目管理工程师 软考中级 第三章重点汇总笔记(书本参照 第二版)

    第三章 信息系统的生命周期(p133) (1)立项阶段:即概念阶段或需求阶段,这一阶段根据用户业务发展和经营管理的需要,提出建设信息系统的初步构想;然后对企业信息系统的需求进行深入调研和分析,形成《需求规格说明书》并确定立项。 (2)开发阶段:以立项阶段所做的需

    2023年04月22日
    浏览(43)
  • springboot就业信息管理系统

    本次设计任务是要设计一个就业信息管理系统,通过这个系统能够满足就业信息管理功能。系统的主要功能包括:首页,个人中心,学生管理,导师管理,企业管理,招聘信息管理,应聘信息管理,面试邀请管理,就业指导管理,交流论坛,系统管理等。 管理员可以根据系统

    2024年02月15日
    浏览(27)
  • 基于SpringBoot的招聘信息管理系统

    基于SpringBoot+Vue的招聘信息管理系统【附源码文档】、前后端分离 开发语言:Java 数据库:MySQL 技术:SpringBoot、Vue、Mybaits Plus、ELementUI 工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:管理员、用户、企业 用户:首页、个人中心、投简信息管理、面试邀请管理、求职信息管

    2024年02月09日
    浏览(35)
  • 社区老人健康信息管理系统|基于springboot社区老人健康信息管理系统设计与实现(源码+数据库+文档)

    社区老人健康信息管理系统目录 目录 基于springboot社区老人健康信息管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、健康信息管理 2、预约管理 3、公告管理 4、公告类型管理 四、数据库设计 1、实体ER图  五、核心代码  六、论文参考 七、最新计算机毕设

    2024年02月20日
    浏览(30)
  • springboot(ssm旅游信息管理系统 在线旅游系统 Java系统

    springboot(ssm旅游信息管理系统 在线旅游系统 Java系统 开发语言:Java 框架:ssm/springboot + vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0) 数据库工具:Navicat 开发软件:eclipse//idea 依赖管理包:Maven 如需了解更多代码细节或修改代码功能界面,本人都能提供技

    2024年01月19日
    浏览(47)
  • 基于springboot+vue的医院信息管理系统

    ✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅 文末获取项目下载方式 🍅 一、项目背景介绍: 医院管理系统从整个社会实践过程来看,对医院进行

    2024年02月04日
    浏览(42)
  • 城乡居民基本医疗信息管理系统|基于Springboot的城乡居民基本医疗信息管理系统设计与实现(源码+数据库+文档)

    城乡居民基本医疗信息管理系统目录 目录 基于Springboot的城乡居民基本医疗信息管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计  1、病例管理 2、医院资讯信息管理 3、医院资讯类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推

    2024年03月19日
    浏览(59)
  • springboot/ssm高校教师教研信息填报系统Java高校教研管理系统

    springboot/ssm高校教师教研信息填报系统Java高校教研管理系统 开发语言:Java 框架:springboot(可改ssm) + vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0) 数据库工具:Navicat 开发软件:eclipse//idea 依赖管理包:Maven 如需了解更多代码细节或修改代码功能界面,

    2024年02月21日
    浏览(33)
  • 界面控件DevExpress ASP.NET Scheduler - 助力快速交付个人信息管理系统(上)

    DevExpress ASP. NET Scheduler组件能完全复制Microsoft Outlook Scheduler的样式和功能,具有日、周、月和时间轴视图,并包括内置的打印支持,因此用户可以在尽可能短的时间内交付全功能的个人信息管理系统。 P.S :DevExpress ASP.NET Web Forms Controls拥有针对Web表单(包括报表)的110+种UI控

    2024年03月11日
    浏览(35)
  • Springboot基于微信小程序的员工日志管理信息系统

    一、项目介绍 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发

    2024年02月02日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包