使用SpringBoot一小时快速搭建一个简单后台管理(后端篇)

这里只需要定义接口类就行了,我们暂时还用不到自定义sql语句,所以其他不用写

public interface UserRepository extends JpaRepository<User, Integer> {

}

service(业务层接口)

==============

在service包下新建一个UserService接口类(注意是接口哦!)

定义五个方法(增删改查),其中查询有两个方法,一个是页面加载要显示所有用户信息的,一个是通过搜索框搜索的模糊查询

public interface UserService {

void insertUser(User user);// 添加用户
void deleteUser(Integer uid);// 删除用户
void updateUser(User user);// 修改用户
List<User> selectAllUser();// 查询所有用户
List<User> selectLike(String search);// 模糊查询

}

serviceImpl(业务层实现)

==================

在serviceImpl包下新建一个UserServiceImpl类,实现UserService接口

前面四个基本的增删改查就不多说啦~大伙应该都知道

主要是第五个selectLike(重点!原创)这个方法,大伙可以仔细研究一下我的这个模糊查询设计模式,很有帮助的哦~ 这里不多介绍了,可以自己仔细学一学

@Service

public class UserServiceImpl implements UserService {

@Autowired
private UserRepository userRepository;
@Override
public void insertUser(User user) {
    userRepository.save(user);
}
@Override
public void deleteUser(Integer uid) {
    userRepository.deleteById(uid);
}
@Override
public void updateUser(User user) {
    userRepository.saveAndFlush(user);
}
@Override
public List<User> selectAllUser() {
    return userRepository.findAll();
}
/**
 * 查询优先级:
 * 1.先查询是否为整型,为整型则通过ID主键查询,返回结果,不为整型则模糊查询其他字段
 * 2.模糊查询字段,忽略密码的模糊查询,对用户名和昵称进行模糊查询,返回结果
 * @param search 查询字段
 * @return 查询列表集合
 */
@Override
public List<User> selectLike(String search) {
    List<User> list = new ArrayList<>();// 查询列表集合
    User user = new User();
    user.setUsername(search);
    user.setNickname(search);
    try {
        Integer uid = Integer.parseInt(search);
        Optional<User> optional = userRepository.findById(uid);
        if (!optional.isPresent()) {
            list = selectVague(user);
        } else {
            list.add(optional.get());
        }
    }catch (NumberFormatException e) {
        // 查询字段不为整型数据,捕获异常
        list = selectVague(user);
    }
    return list;
}
/**
 * 模糊查询
 * @param user
 * @return
 */
private List<User> selectVague(User user) {
    List<User> list = null;
    ExampleMatcher matcher = ExampleMatcher.matchingAny()
            .withMatcher("username", ExampleMatcher.GenericPropertyMatchers.contains())
            .withMatcher("nickname", ExampleMatcher.GenericPropertyMatchers.contains())
            .withIgnoreCase("uid")
            .withIgnoreCase("password");
    Example<User> example = Example.of(user, matcher);
    list = userRepository.findAll(example);
    return list;
}

}

controller(控制层)

===============

基本的一个整体流程已经搭建完毕,最后就是处理controller控制层的逻辑,我们首先完善一下上一篇中的IndexController的代码,让页面加载时候就能显示所有用户的数据、

在controller包下新建一个UserController类,设置改控制类处理所有/user下的请求

@RestController

@RequestMapping(value = “/user”)

public class UserController {

}

页面加载显示数据


IndexController(页面加载显示所有用户)

@RestController

public class IndexController {

@Autowired
private UserService userService;
@RequestMapping(value = "/index") // 访问路径
public ModelAndView toIndex() {
    // 返回templates目录下index.html
    ModelAndView view = new ModelAndView("index");
    // 查询所有的用户,添加到model视图里
    view.addObject("user_list", userService.selectAllUser());
    return view;
}

}

前端修改

同时修改前端内容,通过th:each遍历user_list,分别获取编号,用户名,昵称,密码,通过th:text标签赋值text(对thymeleaf语法不熟悉的可以先去简单看一下基础语法哦~)

还有HTML顶部不要忘了添加支持thymeleaf语法哦~

运行结果

为了方便查看结果,预先在数据库插入几条数据

回到IDEA项目,点击右上角的debug模式启动项目,打开浏览器输入localhost:8081/index(路径根据自己情况来),就能看到数据已经成功显示上来啦



查询功能模块


Ajax异步请求局部刷新

给搜索按钮和搜索框都设置一个ID,同时给数据显示部分的div设置th:fragment标签,获取后端的代码片段

在index.js中添加代码,向后端发送异步请求

// 查询

$(‘#findBtn’).click(function () {

// 发送GET异步请求

$.ajax({

  type: 'GET',
  url: '/user/select', // 请求路径
  data: {
  	'search': $('#search').val()
  },
  success: function (data) {
  	// 局部刷新数据显示部分的div
  	$('#userTable').html(data)
  },
  error: function (err) {
  	console.log(err)
  	alert('操作失败,请刷新重新尝试!')
  }

})

})

UserController处理查询请求

@RestController

@RequestMapping(value = “/user”)

public class UserController {

// 注入业务层对象
@Autowired
private UserService userService;
@GetMapping(value = "/select")
public ModelAndView selectLike(String search) {
    // 返回th:fragment代码片段
    ModelAndView view = new ModelAndView("index::userTable");
    view.addObject("user_list", userService.selectLike(search));
    return view;
}

}

运行结果

重新启动,输入xiao,成功显示

输入数值,优先查询编号



删除功能模块


刚刚的查询功能前端呢我是在index.js里面处理的,接下来删除模块我们换一个方法

首先,删除一条数据,我们是不是通关编号id进行删除呀,所以发送请求的时候是不是要传递编号数据

修改前端

在删除按钮中添加一个th:onclick标签,传递参数为当前行的编号

接着在html底部添加如下代码

function deleteBtn(id) {

    // 发送请求
  $.ajax({
  	type: 'POST',
  	url: '/user/delete',
  	data: {
  		'id': 'id' // 编号
  	},
  	success: function (data) {
            // 局部刷新
  		$('#userTable').html(data)
  	},
  	error: function (err) {
  		console.log(err)
  		alert("操作失败,请刷新重新尝试!")
  	}
  })

}

UserController处理删除请求

添加新的方法

@PostMapping(value = “/delete”)

public ModelAndView deleteUser(Integer id) {

// 通过编号删除用户
userService.deleteUser(id);
ModelAndView view = new ModelAndView("index::userTable");
// 返回新的数据列表
view.addObject("user_list", userService.selectAllUser());
return view;

}

运行结果

点击删除第五条数据,成功删除了第五条数据并刷新表格



添加功能模块


JS和Ajax部分

通过JQuery对提交的表单进行一些非空检验,通过之后发出POST异步请求

在index.js添加下面代码

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

**另外本人还整理收藏了2021年多家公司面试知识点以及各种技术点整理 **

下面有部分截图希望能对大家有所帮助。

在这里插入图片描述

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

以上Java开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-FhH4F8Ni-1712704596846)]

总结

互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

**另外本人还整理收藏了2021年多家公司面试知识点以及各种技术点整理 **

下面有部分截图希望能对大家有所帮助。

[外链图片转存中…(img-rBqGg6Bk-1712704596847)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-MgN0hYWz-1712704596847)]

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为AI助手,我可以为您提供以下步骤: 1. 创建SpringBoot项目 首先需要在IDE中创建一个SpringBoot项目。可以在IDE中选择New Project,然后选择Spring Initializr,填写相关信息,如项目名称、包名、依赖等,最后点击Generate按钮即可生成一个基础的SpringBoot项目。 2. 配置数据库 在项目中添加数据库依赖,如MySQL或者其他数据库。然后在application.properties中配置数据库连接信息,如数据库地址、用户名、密码等。 3. 创建实体类 在项目中创建一个学生实体类,包含学生的基本信息,如学号、姓名、性别、年龄等。可以使用JPA注解将实体类映射到数据库中的表。 4. 创建DAO层 创建一个学生DAO层,使用JPA的Repository接口操作数据库。可以定义一些基本的查询方法,如根据学号查询学生、根据姓名查询学生等。 5. 创建Service层 创建一个学生Service层,处理业务逻辑。可以定义一些方法,如添加学生、删除学生、更新学生信息等。 6. 创建Controller层 创建一个学生Controller层,处理HTTP请求。可以定义一些API接口,如查询学生、添加学生、删除学生、更新学生信息等。 7. 编写前端页面 可以使用一些前端框架,如Bootstrap、jQuery等,编写学生管理系统的前端页面。可以包含查询学生、添加学生、删除学生、更新学生信息等功能。 8. 测试 在完成以上步骤后,可以进行测试。可以使用Postman等工具进行API测试,也可以在前端页面进行测试。 以上就是使用SpringBoot搭建一个学生管理系统的基本步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值