springboot-jsp
│ pom.xml
│
├─src
│ └─main
│ ├─java
│ │ └─pers
│ │ └─ziv
│ │ └─demo
│ │ │ DemoApplication.java
│ │ │
│ │ ├─controller
│ │ │ DemoController.java
│ │ │
│ │ ├─dao
│ │ │ DemoRepository.java
│ │ │
│ │ ├─dto
│ │ │ SelectResultDto.java
│ │ │ UserDto.java
│ │ │
│ │ ├─entity
│ │ │ UserEntity.java
│ │ │
│ │ ├─from
│ │ │ UserForm.java
│ │ │
│ │ └─service
│ │ DemoService.java
│ │
│ ├─resources
│ │ │ application.yml
│ │ │
│ │ └─mapping
│ │ UserRepostry.xml
│ │
│ └─webapp
│ └─WEB-INF
│ └─templates
│ index.jsp
配置文件
application.yml
spring:
mvc:
view:
prefix: /WEB-INF/templates/
suffix: .jsp
datasource:
username: root
password: 123456
url: jdbc:mysql://192.168.136.134:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath:mapping/*.xml
logging:
level:
pers: debug
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pers.ziv</groupId>
<artifactId>jsp</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.11</version>
<relativePath/>
</parent>
<dependencies><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
</dependencies>
</project>
启动类
DemoApplication
package pers.ziv.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Description: 启动入口
*/
@SpringBootApplication
@MapperScan("pers.ziv.demo.dao")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Controller
DemoController
package pers.ziv.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import pers.ziv.demo.dto.SelectResultDto;
import pers.ziv.demo.dto.UserDto;
import pers.ziv.demo.entity.UserEntity;
import pers.ziv.demo.from.UserForm;
import pers.ziv.demo.service.DemoService;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Controller
public class DemoController {
@Autowired
private DemoService demoService;
@RequestMapping("index")
public ModelAndView index(@ModelAttribute("userForm") UserForm userForm) {
ModelAndView model = new ModelAndView("index");
model.addObject("userNameList", demoService.getUserNames());
return model;
}
@RequestMapping("index2")
public ModelAndView index2(@ModelAttribute("userForm") UserForm userForm) {
ModelAndView model = new ModelAndView("index");
List<UserEntity> userNames = demoService.getUserNames2();
Set<String> userNameList = new HashSet<>();
Set<String> fatherNameList = new HashSet<>();
for (UserEntity userName : userNames) {
userNameList.add(userName.getUserName());
fatherNameList.add(userName.getFatherName());
}
model.addObject("userNameList", userNameList);
model.addObject("fatherNameList", fatherNameList);
return model;
}
@RequestMapping("/selectResultForUserName")
@ResponseBody
public List<SelectResultDto> selectResultForUserName(@ModelAttribute("userForm") UserForm userForm, Model model) {
// FORM -> DTO
UserDto userDto = new UserDto();
userDto.setUserName(userForm.getUserName());
userDto.setFatherName(userForm.getFatherName());
// 执行Service
return demoService.selectResultForUserName(userDto);
}
}
Mapper
DemoRepository
package pers.ziv.demo.dao;
import org.springframework.stereotype.Repository;
import pers.ziv.demo.dto.UserDto;
import pers.ziv.demo.entity.UserEntity;
import java.util.List;
@Repository
public interface DemoRepository {
List<String> getUserNames();
List<UserEntity> getUserNames2();
List<UserEntity> selectResultForUserName(UserDto userDto);
}
UserRepostry.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="pers.ziv.demo.dao.DemoRepository">
<resultMap id="userResultMap" type="pers.ziv.demo.entity.UserEntity">
<result column="USERID" jdbcType="INTEGER" property="userId"/>
<result column="USERNAME" jdbcType="VARCHAR" property="userName"/>
<result column="USERAGE" jdbcType="INTEGER" property="userAge"/>
<result column="USERTEL" jdbcType="VARCHAR" property="userTel"/>
<result column="FATHERID" jdbcType="INTEGER" property="fatherId"/>
<result column="FATHERNAME" jdbcType="VARCHAR" property="fatherName"/>
</resultMap>
<select id="getUserNames" resultType="java.lang.String">
SELECT NAME FROM USER
</select>
<select id="getUserNames2" resultType="pers.ziv.demo.entity.UserEntity">
SELECT
USER.NAME AS USERNAME
,FATHER.NAME AS FATHERNAME
FROM USER INNER JOIN FATHER ON USER.NAME = FATHER.USERNAME
</select>
<select id="selectResultForUserName" parameterType="pers.ziv.demo.dto.UserDto" resultMap="userResultMap">
SELECT USER.NAME AS USERNAME
, USER.ID AS USERID
, USER.AGE AS USERAGE
, USER.TEL AS USERTEL
, FATHER.NAME AS FATHERNAME
, FATHER.ID AS FATHERID
FROM USER INNER JOIN FATHER ON USER.NAME = FATHER.USERNAME
WHERE USER.NAME = #{username}
<where>
<if test="userName != null">
AND USER.NAME = #{userName}
</if>
<if test="fatherName != null">
AND FATHER.NAME = #{fatherName}
</if>
</where>
</select>
</mapper>
DTO
UserDto
package pers.ziv.demo.from;
public class UserForm {
private String userName;
private String fatherName;
public String getFatherName() {
return fatherName;
}
public void setFatherName(String fatherName) {
this.fatherName = fatherName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
SelectResultDto
package pers.ziv.demo.dto;
public class SelectResultDto {
private String userName;
private Integer userAge;
private String userTel;
private String fatherName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getUserAge() {
return userAge;
}
public void setUserAge(Integer userAge) {
this.userAge = userAge;
}
public String getUserTel() {
return userTel;
}
public void setUserTel(String userTel) {
this.userTel = userTel;
}
public String getFatherName() {
return fatherName;
}
public void setFatherName(String fatherName) {
this.fatherName = fatherName;
}
}
Entity
UserEntity
package pers.ziv.demo.entity;
public class UserEntity {
private Integer userId;
private String userName;
private Integer userAge;
private String userTel;
private Integer fatherId;
private String fatherName;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getUserAge() {
return userAge;
}
public void setUserAge(Integer userAge) {
this.userAge = userAge;
}
public String getUserTel() {
return userTel;
}
public void setUserTel(String userTel) {
this.userTel = userTel;
}
public Integer getFatherId() {
return fatherId;
}
public void setFatherId(Integer fatherId) {
this.fatherId = fatherId;
}
public String getFatherName() {
return fatherName;
}
public void setFatherName(String fatherName) {
this.fatherName = fatherName;
}
}
From
UserForm
package pers.ziv.demo.from;
public class UserForm {
private String userName;
private String fatherName;
public String getFatherName() {
return fatherName;
}
public void setFatherName(String fatherName) {
this.fatherName = fatherName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
Service
DemoService
package pers.ziv.demo.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import pers.ziv.demo.dao.DemoRepository;
import pers.ziv.demo.dto.SelectResultDto;
import pers.ziv.demo.dto.UserDto;
import pers.ziv.demo.entity.UserEntity;
import java.util.ArrayList;
import java.util.List;
@Service
public class DemoService {
@Autowired
private DemoRepository demoRepository;
public List<String> getUserNames() {
List<String> nameList = demoRepository.getUserNames();
return nameList;
}
public List<UserEntity> getUserNames2() {
List<UserEntity> nameList = demoRepository.getUserNames2();
return nameList;
}
public List<SelectResultDto> selectResultForUserName(UserDto userDto) {
// DTO -> Entity
List<UserEntity> selectResultEntitys = demoRepository.selectResultForUserName(userDto);
return getSelectResult(selectResultEntitys);
}
private List<SelectResultDto> getSelectResult(List<UserEntity> selectResultEntitys) {
List<SelectResultDto> result = new ArrayList<>();
selectResultEntitys.forEach(entity -> {
SelectResultDto dto = new SelectResultDto();
dto.setFatherName(entity.getFatherName());
dto.setUserTel(entity.getUserTel());
dto.setUserAge(entity.getUserAge());
dto.setUserName(entity.getUserName());
result.add(dto);
});
return result;
}
}
JSP
index.jsp
<%@ page pageEncoding="UTF-8" %>
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<title>jsp</title>
</head>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script src="https://unpkg.com/@ag-grid-community/all-modules@26.0.0/dist/ag-grid-community.min.js"></script>
<body style="text-align: center;line-height: 30px">
<form:form modelAttribute="userForm">
<div>
<div>
<label>学生姓名:</label>
<form:select path="userName" items="${userNameList}"></form:select>
</div>
<div>
<label>老爸姓名:</label>
<form:select path="fatherName" items="${fatherNameList}"></form:select>
</div>
<div>
<input id="selectResult" type="button" value="检索"/>
</div>
</form:form>
<div id="myGrid"></div>
</body>
</html>
<style>
#myGrid {
flex: 1 1 0px;
width: 800px;
height: 8000px;
}
</style>
<script>
var gridOptions = {
columnDefs: [
{
headerName: 'select',
field: 'select',
minWidth: 180,
headerCheckboxSelection: true,
headerCheckboxSelectionFilteredOnly: true,
checkboxSelection: true,
},
{field: 'userName', minWidth: 15},
{field: 'userAge', minWidth: 15},
{field: 'userTel', minWidth: 15},
{field: 'fatherName', minWidth: 15},
],
defaultColDef: {
flex: 1,
minWidth: 25,
resizable: true,
},
suppressRowClickSelection: true,
rowSelection: 'multiple',
};
document.addEventListener('DOMContentLoaded', function () {
var gridDiv = document.querySelector('#myGrid');
new agGrid.Grid(gridDiv, gridOptions);
});
/**
* ajax Result Data to Ag-grid
*/
var resultDate = {};
/**
* 检索按下后的场合
*/
$(document).ready(function () {
// 检索按钮点击事件
$("#selectResult").click(function () {
// 给后端发送请求 url:/selectResultForUserName 数据:"name": $("#name").val()
htmlobj = $.ajax({
url: "/selectResultForUserName"
, async: false
, data: {
"userName": $("#userName").val(),
"fatherName": $("#fatherName").val()
}
/* 请求后成功的场合 */
, success: function (result) {
resultDate = result;
if (resultDate.length > 0) {
gridOptions.api.setRowData(resultDate);
} else {
gridOptions.api.setRowData({});
}
}
/* 请求后失败的场合 */
, error: function (data) {
gridOptions.api.setRowData({});
alert("出错了!");
}
}
)
});
});
</script>
|