因为篇幅过长的原因,这个是Java Spring Boot连接数据库的准备事项的后续,具体请点击左侧链接。

实体类(Entity)

Message.java

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

//实体类标志
@Entity
//message是我的表名,name里面写你需要使用的表名
@Table(name="message")
public class Message {
	//@Id一般写在主键的前面
	//@GeneratedValue代表自增,GenerationType.IDENTITY只能在主键为Integer型时使用
	@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id;
	private String number;		//手机号
	private String name;		//姓名
	private String classes;		//班级
	private String sex;			//性别
	private String province;	//省
	private String city;		//市
	private String town;		//地
	private String minute;		//详细地址
	private String hobby;		//爱好
	private String intro;		//简介
	
	//setter getter		此处省略

数据访问层(DAO)

MessageDAO.java
(注意:我在DAO模式里面写的一些方法,继承的接口里面也有,之所以写出来是为了方便查改)

import java.util.List;

//import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;

import com.example.demo.entity.Message;

public interface MessageDAO extends PagingAndSortingRepository<Message, Integer>,JpaSpecificationExecutor<Message> {
	//如果使用表连接,需要继承—>(JpaRepository<Entity, ID>),否则ajax无法使用
	//查询
	@Query("from Message c order by c.id asc")
	List<Message> findAll();
	
	//查询单个id
	public Message findByid(@Param("id")Integer id);
	//唯一性
	public List<Message> findByNumber(String number);
}

服务层(Service)

MessageService.java

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Service;

import com.example.demo.dao.MessageDAO;
import com.example.demo.entity.Message;

@Service
public class MessageService {
	@Autowired
	private MessageDAO messageDAO;
	//查询全部
	public List<Message> findAll(){
		return messageDAO.findAll();
	}
	//添加
	public void save(Message message) {
		messageDAO.save(message);
	}
	//查询单个id
	public Message findByid(@Param("id")Integer id) {
		return messageDAO.findByid(id);
	}
	//删除
	public void deleteById(int id) {
		messageDAO.deleteById(id);
	}
	//唯一性
	public List<Message> findByNumber(String messageNumber){
		return messageDAO.findByNumber(messageNumber);
	}
}

控制器(Controller)

MessageController.java

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.example.demo.entity.Message;
import com.example.demo.service.MessageService;

@Controller
@RequestMapping("message")
public class MessageController {
	@Autowired
	private MessageService messageService;
	
	//测试
	@RequestMapping(value="hello")
	@ResponseBody
	public String hello() {
		return "Hello World";
	}
	
	//查询
	@RequestMapping(value="index")
	public String index(Model model) {
		List<Message> data=messageService.findAll();
		//向模板映射值
		model.addAttribute("data",data);
		return "pages/demo/message/index";
	}
	
	//添加
		//表单
	@RequestMapping("add")
	public String add() {
		return "pages/demo/message/add";
	}
		//提交
	@RequestMapping(value="save")
	public String save(HttpServletRequest request) {
		String number=request.getParameter("number");
		String name=request.getParameter("name");
		String classes=request.getParameter("classes");
		String sex=request.getParameter("sex");
		String province=request.getParameter("province");
		String city=request.getParameter("city");
		String town=request.getParameter("town");
		String minute=request.getParameter("minute");
		//复选框字符串型
		String[] hobby=request.getParameterValues("hobby");
		String str="";
		Integer len=hobby.length;
		for (int i = 0; i < len; i++) {
			str+=hobby[i]+" ";
		}
		String intro=request.getParameter("intro");
		//二次验证,确保安全
		Integer count=messageService.findByNumber(number).size();
		if(count>0) {
			return "手机号已存在";
		}
		if(number==null || number.equals("")) {
			return "手机号不能为空";
		}
		Message message=new Message();
		message.setNumber(number);
		message.setName(name);
		message.setClasses(classes);
		message.setSex(sex);
		message.setProvince(province);
		message.setCity(city);
		message.setTown(town);
		message.setMinute(minute);
		message.setHobby(str);
		message.setIntro(intro);
		messageService.save(message);
		return "redirect:/message/index";
	}
	
	//修改
		//查询单个id
	@RequestMapping(value="findById/{id}")
	public String findById(Model model,@PathVariable("id")Integer id) {
		Message message=messageService.findByid(id);
		model.addAttribute("message",message);
		return "pages/demo/message/update";
	}
		//修改
	@RequestMapping(value="update")
	public String update(HttpServletRequest request) {
		Integer id=Integer.parseInt(request.getParameter("id"));
		String number=request.getParameter("number");
		String name=request.getParameter("name");
		String classes=request.getParameter("classes");
		String sex=request.getParameter("sex");
		String province=request.getParameter("province");
		String city=request.getParameter("city");
		String town=request.getParameter("town");
		String minute=request.getParameter("minute");
		//复选框字符串型
		String[] hobby=request.getParameterValues("hobby");
		String str="";
		Integer len=hobby.length;
		for (int i = 0; i < len; i++) {
			str+=hobby[i]+" ";
		}
		String intro=request.getParameter("intro");
		if(number==null || number.equals("")) {
			return "手机号不能为空";
		}
		Message message=new Message();
		message.setId(id);
		message.setNumber(number);
		message.setName(name);
		message.setClasses(classes);
		message.setSex(sex);
		message.setProvince(province);
		message.setCity(city);
		message.setTown(town);
		message.setMinute(minute);
		message.setHobby(str);
		message.setIntro(intro);
		messageService.save(message);
		return "redirect:/message/index";
	}
	
	//删除
	@RequestMapping(value="deleteById/{id}")
	public String deleteById(@PathVariable("id")Integer id) {
		messageService.deleteById(id);
		return "redirect:/message/index";
	}
	
	//地址————三级联动
	@RequestMapping(value="area.js")
	public String area() {
		return "/js/area.js";
	}
	//地址————映射
	@RequestMapping(value="select.js")
	public String select() {
		return "/js/select.js";
	}
}

Html代码

查询与删除
index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
		*{margin: 0 auto;}
    	.box{width:1000px;margin: 0 auto;}
    	table{width:100%;background:pink;}
    	table,td{border:1px solid black;}
    	.button{padding-left:455px;}
    	li{list-style: none;margin-left: 10px;}
</style>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
	<div class="box">
		<form method="post" action="/message/delete"  th:object="${message}">
			<table>
					<td>手机号</td>
					<td>姓名</td>
					<td>班级</td>
					<td>性别</td>
					<td>地址</td>
					<td>爱好</td>
					<td>简介</td>
	    			<td>操作</td>
				</tr>
				<tr th:each="message: ${data}">
					<td th:text="${message.id}"></td>
					<td th:text="${message.number}"></td>
					<td th:text="${message.name}"></td>
					<td th:text="${message.classes}"></td>
					<td th:text="${message.sex}"></td>
					<td th:text="${message.province}+${message.city}+${message.town}+${message.minute}"></td>
					<td th:text="${message.hobby}"></td>
					<td th:text="${message.intro}"></td>
					<td><a th:href="@{'/message/findById/'+${message.id}}">修改</a>/<a th:href="@{'/message/deleteById/'+${message.id}}">删除</a></td>
				</tr>
			</table>
			<a href="add" class="button"><input type="button" value="添加"></a><br>
		</form>
	</div>
</body>
</html>

下图是效果图

springboot ice远程调用 springboot远程连接数据库_spring boot


添加

add.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
	*{margin: 0 auto;padding: 0;}
	form{width: 300px;border: 1px solid black;}
	textarea{height: 100px;width: 100px;resize: none;}
	#submit{margin-left: 140px;}
	#minute{border: 0px;border-bottom: 1px solid black;}
	#intro{width:100px;height: 100px;}
</style>
<script src="/js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
	function check(){
		var number=document.getElementById("number");
		if(number.value == null || number.value == "" || number.value.length == 0){
			alert("手机号不能为空");
			number.focus();
			return false;
		}
		return true;
	}
</script>
</head>
<body>
	<form method="post" action="/message/save"  >	
		姓名<input   type="text" name="name"  /><br>
		手机号<input  type="text" id="number" name="number" /><br>
		班级<select name="classes">
    						<option>--请选择--</option>
    						<option value="JAVA">JAVA</option>
    						<option value="PHP">PHP</option>
    						<option value="前端">前端</option>
    						<option value="美工">美工</option>
    				 </select><br>
		性别<input type="radio" name="sex" value="男">男
			  <input type="radio" name="sex" value="女">女<br>
		地址<div class="outer">
				<select name="province" id="province">
					<option value="请选择">请选择</option>
				</select>
				<select name="city" id="city">
					<option value="请选择">请选择</option>
				</select>
				<select name="town" id="town">
					<option value="请选择">请选择</option>
				</select>
			</div>
			<script src="/js/area.js"></script>
			<script src="/js/select.js"></script>
			<input   type="text" name="minute" id="minute"  /><br>
		爱好<input type="checkbox" name="hobby" value="篮球">篮球
			  <input type="checkbox" name="hobby" value="足球">足球
			  <input type="checkbox" name="hobby" value="羽毛球">羽毛球
			  <input type="checkbox" name="hobby" value="乒乓球">乒乓球<br>
		个人简介<input   type="text" name="intro" id="intro" /><br>
              <input type="submit" name="submit" id="submit" onclick="return check()" value="提交"> 
	  </form>
</body>
</html>

下图是效果图(地址是用了一个插件,可以自己从网站上找一个)

springboot ice远程调用 springboot远程连接数据库_java_02


修改

update.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
	*{margin: 0 auto;padding: 0;}
	form{width: 300px;border: 1px solid black;}
	textarea{height: 100px;width: 100px;resize: none;}
	#submit{margin-left: 120px;}
	#minute{border: 0px;border-bottom: 1px solid black;}
	#intro{width:100px;height: 100px;}
</style>
<script src="/js/jquery-3.4.1.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
	function check(){
		var id=document.getElementById("id");
		var name=document.getElementById("name");
		if(name.value == null || name.value == "" || name.value.length == 0){
			alert("姓名不能为空");
			name.focus();
			return false;
		}
		return true;
	}
</script>
</head>
<body>
	<form method="post" action="/message/update"  th:each="message:${message}">
		姓名<input   type="text" name="name" th:value="${message.name}" /><br>
		手机号<input   type="text" name="number" id="number" th:value="${message.number}" /><br>
		班级<select name="classes">
							<option value="请选择">请选择</option>
    						<option value="JAVA" th:selected="${message.classes eq 'JAVA'}">JAVA</option>
    						<option value="PHP" th:selected="${message.classes eq 'PHP'}">PHP</option>
    						<option value="前端" th:selected="${message.classes eq '前端'}">前端</option>
    						<option value="美工" th:selected="${message.classes eq '美工'}">美工</option>
    				 </select><br>
		性别<input type="radio" name="sex" value="男" checked>男
			  <input type="radio" name="sex" value="女" th:checked="${message.sex eq '女'}">女<br>
		地址<div class="outer">
				<select name="province" id="province">
					<option value="请选择">请选择</option>
				</select>
				<select name="city" id="city">
					<option value="请选择">请选择</option>
				</select>
				<select name="town" id="town">
					<option value="请选择">请选择</option>
				</select>
			</div>
			<script src="/js/area.js"></script>
			<script src="/js/select.js"></script>
			<input   type="text" name="minute" id="minute"  th:value="${message.minute}"  /><br>
		爱好<input type="checkbox" name="hobby" value="篮球" th:checked="${#strings.contains(message.hobby ,'篮球')}">篮球
			  <input type="checkbox" name="hobby" value="足球" th:checked="${#strings.contains(message.hobby ,'足球')}">足球
			  <input type="checkbox" name="hobby" value="羽毛球" th:checked="${#strings.contains(message.hobby ,'羽毛球')}">羽毛球
			  <input type="checkbox" name="hobby" value="乒乓球" th:checked="${#strings.contains(message.hobby ,'乒乓球')}">乒乓球<br>
		个人简介<input   type="text" name="intro" id="intro" th:value="${message.intro}" /><br>
			  <input type="hidden" name="id" th:value="${message.id}" />
              <input name="submit" id="submit" type="submit" onclick="return check()" value="确认修改"> 
	</form>
</body>
</html>

下图是效果图(这个地址的获取有点问题)

springboot ice远程调用 springboot远程连接数据库_thymeleaf 模板_03


这就是普通的增删改查,他主要用到了thymeleaf 模板,谢谢观看。