精灵王子莱戈拉斯(帅气的精灵王子—-莱戈拉斯(五))

来源头条作者:互联网高级架构师

摘要

对企业来说,人、物资、能源、资金、信息是5大重要资源。人、物资、能源、资金这些都是可见的有形资源,而信息是一种无形的资源。以前人们比较看重有形的资源,进入信息社会和知识经济时代以后,信息资源就显得日益重要。因为信息资源决定了如何更有效地利用物资资源。信息资源是人类与自然的斗争中得出的知识结晶,掌握了信息资源,就可以更好地利用有形资源,使有形资源发挥更好的效益。

由此可见,诸如各类管理系统还是很有价值的,笔者经历的公司内部都有自己实现的管理系统,可能有些非互联网的公司是依靠其他公司提供的信息管理服务,ERP系统至今还发挥着重要作用,笔者下班后连忙带赶,经历数个小时的鏖战,终于做完了此xx管理系统,在此与诸位分享。

1 技术选型

1.1 Mysql8

为什么是mysql8,不是5版本的。没错就是喜新厌旧啦!!!

mysql8有何特别之处呢!

1.性能就是好,没错它就是强,所以当然上Mysql8,快点上8。

精灵王子莱戈拉斯(帅气的精灵王子----莱戈拉斯(五))

2.Mysql8还支持各种牛逼的功能:SQL窗口函数,GIS,JSON扩展语法等等。总之这些功能听着就挺牛,由于笔者自己还没弄明白,就不赘述了。

1.2 springboot2

当前主流的web开发框架,不二之选,没有比这更方便的了,为什么选这个,它就是无敌,没有竞争对手啊。自动装配,父级依赖,嵌入tomcat等等,就是无敌呀。

精灵王子莱戈拉斯(帅气的精灵王子----莱戈拉斯(五))

1.3 模板引擎thymeleaf

用模板引擎也实属无奈,笔者不会前端呀,毕竟人的精力是有限的。不过这个东西还是挺好用的,感觉用着和几年前学写jsp也差不多。

2 项目构建

2.1 创建项目

spring initializer

精灵王子莱戈拉斯(帅气的精灵王子----莱戈拉斯(五))

取个心爱的项目名字

精灵王子莱戈拉斯(帅气的精灵王子----莱戈拉斯(五))

勾选需要的依赖,mysql,thymeleaf,jpa

精灵王子莱戈拉斯(帅气的精灵王子----莱戈拉斯(五))

2.2 建表

好吧,笔者为了偷懒,没有建表ddl,直接上jpa,先建一个需要的库,create database。做完这些,项目开始的准备工作就已经完了,马上又带了激动人心的撸代码环节了。

3 项目实现

3.1 项目效果

主页面

精灵王子莱戈拉斯(帅气的精灵王子----莱戈拉斯(五))

就是这样滴,如此就已然发挥了笔者百分之两百的前端功力了,各种查阅资料,复制copy加代码修改,修修改改终于有了上边的模样,应该不算太丑吧!好吧,我承认了。

3.2 项目结构

和主流web开发项目的结构基本大同小异:

对应数据库实体的entity包,对应数据库操作的repo目录,对应业务代码的service目录,对应restful api的controller目录。

精灵王子莱戈拉斯(帅气的精灵王子----莱戈拉斯(五))

4 代码实现

4.1 前台页面

首页面,就是上边看到的那个帅气的首页!

xx-manager

新增

姓名

邮箱

电话

地址

操作

修改

删除

1}\”>

总人数: [[${items}]]

[[${i}]]

[[${i}]]

下一页

下一页

尾页

尾页

新增功能页面

xx-manager

xx-manager

保存

保存

回退

修改功能页面

xx-manager

xx-manager

更新

修改

回退

4.2 后台业务实现

4.2.1 实体类Employee

对应数据库中的表

package com.lbh.xxmanager.entity;import javax.persistence.*;/*** Copyright(c)lbhbinhao@163.com* @author liubinhao* @date 2021/1/7* ++++ ______ ______ ______* +++/ /| / /| / /|* +/_____/ | /_____/ | /_____/ |* | | | | | | | | |* | | | | | |________| | |* | | | | | / | | |* | | | | |/___________| | |* | | |___________________ | |____________| | |* | | / / | | | | | | |* | |/ _________________/ / | | / | | /* |_________________________|/b |_____|/ |_____|/*/@Entity@Table(name = \”xx_employee\”)public class Employee {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private long id;@Column(name = \”name\”)private String name;@Column(name = \”email\”)private String email;@Column(name = \”mobile\”)private String mobile;@Column(name = \”location\”)private String location;@Column(name=\”status\”)private int status;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getMobile() {return mobile;}public void setMobile(String mobile) {this.mobile = mobile;}public String getLocation() {return location;}public void setLocation(String location) {this.location = location;}public int getStatus() {return status;}public void setStatus(int status) {this.status = status;}}

4.2.2 数据库操作层repo

package com.lbh.xxmanager.repo;import com.lbh.xxmanager.entity.Employee;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.stereotype.Repository;import java.util.List;/*** Copyright(c)lbhbinhao@163.com* @author liubinhao* @date 2021/1/7* ++++ ______ ______ ______* +++/ /| / /| / /|* +/_____/ | /_____/ | /_____/ |* | | | | | | | | |* | | | | | |________| | |* | | | | | / | | |* | | | | |/___________| | |* | | |___________________ | |____________| | |* | | / / | | | | | | |* | |/ _________________/ / | | / | | /* |_________________________|/b |_____|/ |_____|/*/@Repositorypublic interface EmployeeRepository extends JpaRepository

{List

findAllByStatus(int status);Page

findAllByStatus(int status, Pageable pageable);Page

findAllByStatusAndLocationLikeOrNameLikeOrEmailLike(int status,String locaion,String name,String email, Pageable pageable);}

4.2.3 业务代码service

接口:

package com.lbh.xxmanager.service;import com.lbh.xxmanager.entity.Employee;import org.springframework.data.domain.Page;import java.util.List;/*** Copyright(c)lbhbinhao@163.com* @author liubinhao* @date 2021/1/7* ++++ ______ ______ ______* +++/ /| / /| / /|* +/_____/ | /_____/ | /_____/ |* | | | | | | | | |* | | | | | |________| | |* | | | | | / | | |* | | | | |/___________| | |* | | |___________________ | |____________| | |* | | / / | | | | | | |* | |/ _________________/ / | | / | | /* |_________________________|/b |_____|/ |_____|/*/public interface EmployeeService {List

findAllEmployees();void saveEmployee(Employee employee);Employee getEmployeeById(long id);void deleteEmployeeById(long id);Page

findPaging(int no,int size);Page

findPaging(int no,int size,String searchKey);}

业务实现类:

package com.lbh.xxmanager.service;import com.lbh.xxmanager.entity.Employee;import com.lbh.xxmanager.repo.EmployeeRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.data.domain.PageRequest;import org.springframework.data.domain.Pageable;import org.springframework.stereotype.Service;import java.util.List;import java.util.Optional;/*** Copyright(c)lbhbinhao@163.com** @author liubinhao* @date 2021/1/7* ++++ ______ ______ ______* +++/ /| / /| / /|* +/_____/ | /_____/ | /_____/ |* | | | | | | | | |* | | | | | |________| | |* | | | | | / | | |* | | | | |/___________| | |* | | |___________________ | |____________| | |* | | / / | | | | | | |* | |/ _________________/ / | | / | | /* |_________________________|/b |_____|/ |_____|/*/@Servicepublic class EmployeeServiceImpl implements EmployeeService {@Autowiredprivate EmployeeRepository employeeRepository;@Overridepublic List

findAllEmployees() {return employeeRepository.findAllByStatus(0);}@Overridepublic void saveEmployee(Employee employee) {employee.setStatus(0);employeeRepository.save(employee);}@Overridepublic Employee getEmployeeById(long id) {Optional

byId = employeeRepository.findById(id);Employee employee = null;if (byId.isPresent()){employee = byId.get();}else {throw new RuntimeException(\”该id员工不存在!\”);}return employee;}@Overridepublic void deleteEmployeeById(long id) {Employee employeeById = getEmployeeById(id);employeeById.setStatus(1);employeeRepository.save(employeeById);}@Overridepublic Page

findPaging(int no, int size) {Pageable pageable = PageRequest.of(no – 1,size);return employeeRepository.findAllByStatus(0,pageable);}@Overridepublic Page

findPaging(int no, int size, String searchKey) {String key = \”%\”+searchKey+\”%\”;Pageable pageable = PageRequest.of(no – 1,size);return employeeRepository.findAllByStatusAndLocationLikeOrNameLikeOrEmailLike(0,key,key,key,pageable);}}

4.2.4 Web接口

package com.lbh.xxmanager.controller;import com.lbh.xxmanager.entity.Employee;import com.lbh.xxmanager.service.EmployeeService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.*;import org.thymeleaf.util.StringUtils;import java.util.List;/*** Copyright(c)lbhbinhao@163.com* @author liubinhao* @date 2021/1/7* ++++ ______ ______ ______* +++/ /| / /| / /|* +/_____/ | /_____/ | /_____/ |* | | | | | | | | |* | | | | | |________| | |* | | | | | / | | |* | | | | |/___________| | |* | | |___________________ | |____________| | |* | | / / | | | | | | |* | |/ _________________/ / | | / | | /* |_________________________|/b |_____|/ |_____|/*/@Controllerpublic class EmployeeController {@Autowiredprivate EmployeeService employeeService;@GetMapping(\”/\”)public String index(Model model){model.addAttribute(\”employees\”,employeeService.findAllEmployees());return \”redirect:/page/1\”;}@GetMapping(\”/newEmployee\”)public String newEmployee(Model model){Employee employee = new Employee();model.addAttribute(\”employee\”,employee);return \”new_employee\”;}@PostMapping(\”/saveEmployee\”)public String saveEmployee(@ModelAttribute Employee employee){employeeService.saveEmployee(employee);return \”redirect:/\”;}@GetMapping(\”/updateEmployee/{id}\”)public String updateEmployee(@PathVariable Long id,Model model){Employee employeeById = employeeService.getEmployeeById(id);model.addAttribute(\”employee\”,employeeById);return \”update_employee\”;}@GetMapping(\”/deleteEmployee/{id}\”)public String deleteEmployee(@PathVariable Long id){employeeService.deleteEmployeeById(id);return \”redirect:/\”;}@GetMapping(\”/page/{pageNo}\”)public String findPaging(@PathVariable int pageNo, @RequestParam(required = false) String key, Model model){Page

paging = null;if (StringUtils.isEmpty(key)) {paging = employeeService.findPaging(pageNo, 5);}else{paging = employeeService.findPaging(pageNo, 5,key);}List

content = paging.getContent();model.addAttribute(\”currentPage\”,pageNo);model.addAttribute(\”totalPages\”,paging.getTotalPages());model.addAttribute(\”items\”,paging.getTotalElements());model.addAttribute(\”employees\”,content);return \”index\”;}}

4.3 配置文件

springboot的配置文件

server.port=9001spring.datasource.username=rootspring.datasource.password=你的数据库密码spring.datasource.url=jdbc:mysql://localhost:3303/xx-manager?serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&autoReconnect=true&useSSL=false&failOverReadOnly=falsespring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# The SQL dialect makes Hibernate generate better SQL for the chosen databasespring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect# update 这样写可以自动建表,更新表# Hibernate ddl auto (create, create-drop, validate, update)spring.jpa.hibernate.ddl-auto=updatelogging.level.org.hibernate.SQL=DEBUGlogging.level.org.hibernate.type=TRACE

5 总结

写一个这样简单的后台信息管理还是不难,看来笔者还是宝刀未老。下班回家开始做,不过写博客是真滴难,都过了12点还没有写

完,写博客和我写代码的时间也相差无几了。哎,我这可怜的头发啊。

精灵王子莱戈拉斯(帅气的精灵王子----莱戈拉斯(五))

(感谢阅读,希望对你所有帮助)

来源:blog.csdn.net/weixin_44671737/

article/details/112341805

本站无法对海量内容真伪性鉴别,请勿相信本站任何号码,邮件,站外网址等信息,如有需要,请自行甄别。版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至net@163.com举报,一经查实,本站将立刻删除。
(0)
上一篇 2023年2月11日 下午12:52
下一篇 2023年2月11日 下午12:55

相关推荐

发表回复

登录后才能评论