使用springboot进行增删改查操作

今天继续和crud杠

刚学ssm时候觉得ssm好用,现在学springboot又觉得springboot强无敌,只需要一个配置文件,而且配置文件里也不需要写那么多东西,对新手是真的友好。

下面就直接放代码了:
数据库:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `age` int(11) NOT NULL,
  `sex` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

包结构:
在这里插入图片描述
pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.cm</groupId>
  <artifactId>springboot</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>springboot Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <type>pom</type>
</dependency>
    
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.0.4.RELEASE</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-tomcat -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <version>2.1.2.RELEASE</version>
</dependency>
        <!-- servlet依赖. -->
      <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <version>8.5.42</version>
</dependency>
           <!-- mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
        </dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>2.1.4.RELEASE</version>
</dependency>
 <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
 
  </dependencies>
  <build>
    <finalName>springboot</finalName>
  </build>
</project>

配置文件:
application.properties

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
server.port=8080
server.servlet.context-path=/
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/smbms?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update

实体类:

package com.cm.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="user")
public class User {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY) 
	@Column(name="id")
	private int id;
	@Column(name="name")
	private String name;
	@Column(name="age")
	private int age;
	@Column(name="sex")
	private String sex;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
}

持久层:
UserDao.java

package com.cm.dao;

import org.springframework.data.jpa.repository.JpaRepository;

import com.cm.entity.User;

public interface UserDao extends JpaRepository<User, Integer>{
}

jpa这东西真的是深得我心,一点代码就解决了所有增删改查,而且jpa默认的是Hibernate,不需要写什么注解、xml什么的直接就能用了,看着就很清爽,而且,在单表crud方面,无敌!

service层
UserService.java

package com.cm.service;

import org.springframework.data.domain.Page;

import com.cm.entity.User;

public interface UserService {
	Page<User> list(int start,int size);
	void add(User user);
	void delete(int id);
	void update(User user);
	User get(int id);
}

UserServiceImpl.java

package com.cm.service;

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.data.domain.Sort;
import org.springframework.stereotype.Service;

import com.cm.dao.UserDao;
import com.cm.entity.User;

@Service
public class UserServiceImpl implements UserService{
	@Autowired
	UserDao userDao;
	
	@Override
	public Page<User> list(int start,int size) {
		start=start<0?0:start;
		Sort sort=new Sort(Sort.Direction.ASC,"id");
		Pageable pageable=PageRequest.of(start, size,sort);
		return userDao.findAll(pageable);
	}

	@Override
	public void add(User user) {
		// TODO Auto-generated method stub
		userDao.save(user);
	}

	@Override
	public void delete(int id) {
		// TODO Auto-generated method stub
		userDao.deleteById(id);
	}

	@Override
	public void update(User user) {
		// TODO Auto-generated method stub
		userDao.save(user);
	}

	@Override
	public User get(int id) {
		// TODO Auto-generated method stub
		return userDao.getOne(id);
	}

}

控制层
UserController.java

package com.cm.controller;

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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.cm.entity.User;
import com.cm.service.UserService;

@Controller
public class UserController {
	@Autowired
	UserService userService;
	
	@RequestMapping("/list")
	public String list(Model model,@RequestParam(value="start",defaultValue="0")int start,
			@RequestParam(value="size",defaultValue="3")int size) {
		Page<User> page=userService.list(start, size);
		model.addAttribute("page",page);
		return "list";
	}
	@RequestMapping("/add")
	public String add(User user) {
		userService.add(user);
		return "redirect:list";
	}
	@RequestMapping("/update")
	public String update(User user) {
		userService.update(user);
		return "redirect:list";
	}
	@RequestMapping("/delete")
	public String  delete(int id) {
		userService.delete(id);
		return "redirect:list";
	}
	@RequestMapping("/edit")
	public String get(Model model,int id) {
		User user=userService.get(id);
		model.addAttribute("user",user);
		return "edit";
	}
}

最后还有一个启动类,springboot启动方式也是挺有意思的了,让我想起来当年在控制台输出hello word的感觉,哈哈
SpringbootApplication.java

package com.cm;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootApplication {

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

最后是两个jsp
list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
   
<div align="center">
 
</div>
 
<div style="width:500px;margin:20px auto;text-align: center">
    <table align='center' border='1' cellspacing='0'>
        <tr>
            <td>编号</td>
            <td>姓名</td>
            <td>年龄</td>
            <td>性别</td>
            <td>编辑</td>
            <td>删除</td>
        </tr>
        <c:forEach items="${page.content}" var="c">
            <tr>
                <td>${c.id}</td>
                <td>${c.name}</td>
                <td>${c.age}</td>
                <td>${c.sex}</td>
                <td><a href="edit?id=${c.id}">编辑</a></td>
                <td><a href="delete?id=${c.id}">删除</a></td>
            </tr>
        </c:forEach>
         
    </table>
    <br>
    <div>
                <a href="?start=0">[首  页]</a>
            <a href="?start=${page.number-1}">[上一页]</a>
             <c:if test="${page.number<page.totalPages-1}">
                <a href="?start=${page.number+1}">[下一页]</a>
            </c:if>
            <a href="?start=${page.totalPages-1}">[末  页]</a>
    </div>
    <br>
    <form action="add" method="post">
     
    姓名 <input name="name"> <br>
    年龄<input name="age"> <br>
    性别 <input name="sex"> <br>
    <button type="submit">提交</button>
     
    </form>
</div>

edit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8" isELIgnored="false"%>
 
<div style="margin:0px auto; width:500px">
 
<form action="/update" method="post">
 
姓名: <input name="name" value="${user.name}"> <br>
年龄: <input name="age" value="${user.age}"> <br>
性别: <input name="sex" value="${user.sex}"> <br>
 
<input name="id" type="hidden" value="${user.id}">
<button type="submit">提交</button>
 
</form>
</div>

以上就是全部代码了,因为springboot是在how2j上学的,所以很多地方都是借鉴了站长的写法

运行效果如下:
在这里插入图片描述
edit
在这里插入图片描述
写的时候也是有许许多多小错误,就是这些小错误搞得我改bug花的时间比敲代码的时间还长,还好最后运行成功了,不然非得难受死。代码这东西不多敲敲永远不知道它会报多少奇形怪状的错误。

猜你喜欢

转载自blog.csdn.net/weixin_44693698/article/details/94757314