package com.nxy.config;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.apache.commons.lang3.StringUtils;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
@EnableTransactionManagement
@Configuration
@MapperScan("com.nxy.mapper")
public class MybatisPlusConfig {
private Logger logger = LoggerFactory.getLogger(MybatisPlusConfig.class);
@Bean //分页拦截器
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
/**
* 代码生成方法
*
* @param args
*/
public static void main(String[] args) {
//如果在空项目下创建模块项目,我需要制定模块的名称,否则设置为空
String moduleName = "homework-0526";
// String moduleName = "";
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/" +moduleName+"/src/main/java");
//需要修改
gc.setAuthor("牛星元");
gc.setOpen(false);
mpg.setGlobalConfig(gc);
// 数据源配置
//需要修改
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/xiao4day2-1?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("487857");
mpg.setDataSource(dsc);
//包配置
PackageConfig pc = new PackageConfig();
// pc.setModuleName(scanner("请输入你的包名"));
//需要修改
pc.setParent("com.nxy");//你哪个父目录下创建包
mpg.setPackageInfo(pc);
//自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
// 如果模板引擎是 freemarker
String templatePath = "/templates/mapper.xml.ftl";
// 如果模板引擎是 velocity
// String templatePath = "/templates/mapper.xml.vm";
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath + "/"+moduleName +"/src/main/resources/mappers/" /*+ pc.getModuleName()
+ "/"*/ + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
// 配置自定义输出模板
//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
// templateConfig.setEntity("templates/entity2.java");
// templateConfig.setService();
// templateConfig.setController();
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
// 策略配置,数据库表配置
StrategyConfig strategy = new StrategyConfig();
//数据库表映射到实体的命名策略
strategy.setNaming(NamingStrategy.underline_to_camel);
//数据库表字段映射到实体类的命名策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//自定义继承entity类,添加这一个会在生成实体类的时候继承entity
//strategy.setSuperEntityClass("com.wy.testCodeGenerator.entity");
//实体是否为lombok模型
strategy.setEntityLombokModel(true);
//生成@RestController控制器
strategy.setRestControllerStyle(true);
//是否继承controller
// strategy.setSuperControllerClass("com.wy.testCodeGenerator.controller");
// strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
//需要修改
strategy.setInclude("t_student","t_classes");
// strategy.setSuperEntityColumns("id");
//驼峰转连字符串
strategy.setControllerMappingHyphenStyle(true);
//表前缀
strategy.setTablePrefix("t_");
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
public static String scanner(String someThing) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入" + someThing + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String sc = scanner.next();
if (StringUtils.isNotEmpty(sc)) {
return sc;
}
}
throw new MybatisPlusException("请输入正确的" + someThing + "!");
}
}
package com.nxy.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
*
*
*
*
* @author 牛星元
* @since 2020-05-26
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_classes")
public class Classes implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "cid", type = IdType.AUTO)
private Integer cid;
private String cname;
}
package com.nxy.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDate;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
/**
*
*
*
*
* @author 牛星元
* @since 2020-05-26
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_student")
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String name;
private String sex;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date cdate;
private Integer cid;
private String cname;
}
package com.nxy.mapper;
import com.nxy.entity.Classes;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
*
* Mapper 接口
*
*
* @author 牛星元
* @since 2020-05-26
*/
public interface ClassesMapper extends BaseMapper<Classes> {
}
package com.nxy.mapper;
import com.nxy.entity.Classes;
import com.nxy.entity.Student;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
*
* Mapper 接口
*
*
* @author 牛星元
* @since 2020-05-26
*/
public interface StudentMapper extends BaseMapper<Student> {
List<Student> list(Student student);
int add(Student student);
int pldel(int[] ids);
int upd(Student student);
List<Classes> findAll();
Student findOne(Student student);
}
package com.nxy.service;
import com.nxy.entity.Classes;
import com.baomidou.mybatisplus.extension.service.IService;
/**
*
* 服务类
*
*
* @author 牛星元
* @since 2020-05-26
*/
public interface IClassesService extends IService<Classes> {
}
package com.nxy.service;
import com.github.pagehelper.PageInfo;
import com.nxy.entity.Classes;
import com.nxy.entity.Student;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
*
* 服务类
*
*
* @author 牛星元
* @since 2020-05-26
*/
public interface IStudentService extends IService<Student> {
PageInfo<Student> list(Student student,Integer pageNum,Integer pageSize);
int add(Student student);
int pldel(int[] ids);
int upd(Student student);
List<Classes> findAll();
Student findOne(Student student);
}
package com.nxy.service.impl;
import com.nxy.entity.Classes;
import com.nxy.mapper.ClassesMapper;
import com.nxy.service.IClassesService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
*
* 服务实现类
*
*
* @author 牛星元
* @since 2020-05-26
*/
@Service
public class ClassesServiceImpl extends ServiceImpl<ClassesMapper, Classes> implements IClassesService {
}
package com.nxy.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.nxy.entity.Classes;
import com.nxy.entity.Student;
import com.nxy.mapper.StudentMapper;
import com.nxy.service.IStudentService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author 牛星元
* @since 2020-05-26
*/
@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements IStudentService {
@Autowired
private StudentMapper studentMapper;
@Override
public PageInfo<Student> list(Student student, Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum,pageSize);
return new PageInfo<Student>(studentMapper.list(student));
}
@Override
public int add(Student student) {
return studentMapper.add(student);
}
@Override
public int pldel(int[] ids) {
return studentMapper.pldel(ids);
}
@Override
public int upd(Student student) {
return studentMapper.upd(student);
}
@Override
public List<Classes> findAll() {
return studentMapper.findAll();
}
@Override
public Student findOne(Student student) {
return studentMapper.findOne(student);
}
}
<?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="com.nxy.mapper.ClassesMapper">
</mapper>
<?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="com.nxy.mapper.StudentMapper">
<select id="list" resultType="Student">
SELECT * FROM t_student s LEFT JOIN t_classes c on(s.cid=c.cid)
</select>
<select id="findOne" resultType="Student">
SELECT * FROM t_student s LEFT JOIN t_classes c on(s.cid=c.cid) where id=#{
id}
</select>
<select id="findAll" resultType="Classes">
SELECT * FROM t_classes
</select>
<insert id="add">
insert into t_student value(null,#{
name},#{
sex},#{
cdate},#{
cid})
</insert>
<update id="upd">
update t_student set name=#{
name},sex=#{
sex},cdate=#{
cdate},cid=#{
cid} where id=#{
id}
</update>
<delete id="pldel">
delete from t_student where id in
<foreach collection="array" item="id" open="(" close=")" separator=",">
#{
id}
</foreach>
</delete>
</mapper>
package com.nxy.controller;
import com.github.pagehelper.PageInfo;
import com.nxy.entity.Classes;
import com.nxy.entity.Student;
import com.nxy.service.IStudentService;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
*
* 前端控制器
*
*
* @author 牛星元
* @since 2020-05-26
*/
@Controller
@MapperScan("com.nxy.mapper")
public class StudentController {
@Autowired
private IStudentService iStudentService;
@RequestMapping("list")
public String list(ModelMap modelMap,Student student, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "5")Integer pageSize){
PageInfo<Student> info = iStudentService.list(student, pageNum, pageSize);
modelMap.addAttribute("info",info);
return "list";
}
@RequestMapping("add")
public String add(ModelMap modelMap,Student student){
int add = iStudentService.add(student);
return "redirect:list";
}
@RequestMapping("upd")
public String upd(ModelMap modelMap,Student student){
int upd = iStudentService.upd(student);
return "redirect:list";
}
@RequestMapping("toadd")
public String toadd(ModelMap modelMap){
List<Classes> all = iStudentService.findAll();
modelMap.addAttribute("all",all);
return "add";
}
@RequestMapping("toupd")
public String toupd(ModelMap modelMap,Student student){
List<Classes> all = iStudentService.findAll();
Student one = iStudentService.findOne(student);
modelMap.addAttribute("all",all);
modelMap.addAttribute("one",one);
return "upd";
}
@RequestMapping("pldel")
public String pldel(@RequestParam("ids") int[] ids){
int i = iStudentService.pldel(ids);
return "redirect:list";
}
}
#应用配置
spring.application.name=homework-0522
server.port=8081
#数据源
spring.datasource.url=jdbc:mysql://localhost:3306/xiao4day2-1?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
#全局设置@JsonFormat的格式pattern
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#设置全局时区
spring.jackson.time-zone=GMT+8
#不为空的属性才会序列化
spring.jackson.default-property-inclusion=non_null
#java.util.date转换成timestamp
spring.jackson.serialization.write-dates-as-timestamps=false
#对象为空时是否报错,默认true
spring.jackson.serialization.fail-on-empty-beans=false
#json中含pojo不存在属性时是否失败报错,默认true
spring.jackson.deserialization.fail-on-unknown-properties=false
#mybatis-plus配置
mybatis-plus.type-aliases-package=com.nxy.entity
mybatis-plus.mapper-locations=classpath:mappers/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# FreeMarker Mvc配置
# 编码格式
spring.freemarker.charset=UTF-8
# freemarker模板后缀 默认是 .ftl
spring.freemarker.suffix=.html
#模板加载路径,默认路径是 classpath:/templates/
spring.freemarker.template-loader-path=classpath:/templates
#Content-Type值
spring.freemarker.content-type=text/html;charset=utf-8
#禁用模板缓存
spring.freemarker.cache=false
#数字格式化
spring.freemarker.settings.number_format=0.##
#自定义属性配置
#文件访问的前缀
file.domain=http://localhost:${server.port}/
#文件件的上传位置
file.path=D:\\pic\\
#定义静态文件的访问目录,图片上传位置的绑定
spring.resources.static-locations=file:${file.path},classpath:/public/
#配置文件上传 #1024000
spring.servlet.multipart.max-file-size=1MB
spring.servlet.multipart.max-request-size=10MB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="/css/bootstrap.css" rel="stylesheet">
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
</head>
<body>
<script>
function toupd(id) {
location="toupd?id="+id;
}
function toadd() {
location="toadd";
}
function pldel() {
var ids=new Array();
$("#c1:checked").each(
function () {
ids.push($(this).val());
}
)
alert(ids)
var re =confirm("确认删除?")
if(re==false)
return;
location="pldel?ids="+ids;
}
</script>
<button onclick="toadd()">添加</button><button onclick="pldel()">批量删除</button>
<table class="table">
<tr>
<td>选择</td>
<td>姓名</td>
<td>性别</td>
<td>班级</td>
<td>入学日期</td>
<td>操作</td>
</tr>
<#list info.list as m>
<tr>
<td><input type="checkbox" id="c1" value="${m.id!}"></td>
<td>${
m.name!}</td>
<td>${
m.sex!}</td>
<td>${
m.cname!}</td>
<td>${
(m.cdate?string('yyyy-MM-dd'))!}</td>
<td><button onclick="toupd(${m.id!})">编辑</button></td>
</tr>
</#list>
</table>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="/css/bootstrap.css" rel="stylesheet">
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
</head>
<body>
<form action="add" method="post">
姓名<input type="text" name="name"><br>
性别<input type="text" name="sex"><br>
班级<select name="cid">
<option value="0">请选择班级</option>
<#list all as c>
<option value="${c.cid!}">${
c.cname!}</option>
</#list>
</select><br>
入学日期<input type="date" name="cdate"><br>
<button>添加</button>
</form>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="/css/bootstrap.css" rel="stylesheet">
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
</head>
<body>
<form action="upd" method="post">
<input type="text" name="id" value="${one.id!}">
姓名<input type="text" name="name" value="${one.name!}"><br>
性别<input type="text" name="sex" value="${one.sex!}"><br>
班级<select name="cid">
<option value="0">请选择班级</option>
<#list all as c>
<#if one.cid?? && one.cid==c.cid>
<option value="${c.cid!}" selected>${
c.cname!}</option>
<#else><option value="${c.cid!}" >${
c.cname!}</option>
</#if>
</#list>
</select><br>
入学日期<input type="date" name="cdate" value="${(one.cdate?string('yyyy-MM-dd'))!}"><br>
<button>保存</button>
</form>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.niuxingyuan.springboot</groupId>
<artifactId>homework-0526</artifactId>
<version>1.0-SNAPSHOT</version>
<name>com.niuxingyuan.springboot</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mysql java驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<!-- test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- freemarker -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
<!--代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="/css/bootstrap.css" rel="stylesheet">
</head>
<body>
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script type="text/javascript">
function toAdd() {
location="toAdd";
}
function toUpdate(id) {
location="toUpdate?id="+id;
}
function del(id) {
$.post("delete",{
id:id},function(flag){
if (flag){
location="list";
alert("删除成功")
}else{
alert("删除失败")
}
})
}
</script>
<form action="/list" method="get">
学生姓名:<input type="text" name="wname" value="${bm.wname!}">
专业:<select name="zname" >
<option value="">--请选择--</option>
<#list hh as h>
<#if (bm.zname?? && h.zid==bm.zname)>
<option value="${h.zid!}" selected>${
h.zyname!}</option>
<#else>
<option value="${h.zid!}">${
h.zyname!}</option>
</#if>
</#list>
</select>
出生日期:<input type="date" name="b1" value="${(bm.b1?string('yyyy-MM-dd'))!}">-<input type="date" name="b2" value="${(bm.b2?string('yyyy-MM-dd'))!}">
<button>查询</button>
</form>
<button onclick="toAdd()">添加</button>
<table class="table">
<tr>
<td>学生姓名</td>
<td>性别</td>
<td>出生日期</td>
<td>年龄</td>
<td>联系电话</td>
<td>专业</td>
<td>学费</td>
<td>住宿费</td>
<td>报名费</td>
<td>总计</td>
<td>操作</td>
</tr>
<#list info.list as bm>
<tr>
<td>${
bm.name!}</td>
<td>
<#if (bm.sex??&& bm.sex==1)>男<#else>女</#if>
</td>
<td>${
(bm.birth?date)!}</td>
<td>${
bm.age!}</td>
<td>${
bm.phone!}</td>
<td>${
bm.zyname!}</td>
<td>${
bm.xf!}</td>
<td>${
bm.zsf!}</td>
<td>${
bm.bmf!}</td>
<td>${
(bm.xf+bm.zsf+bm.bmf)!}</td>
<td>
<button onclick="toUpdate(${bm.id})">修改</button>
<button onclick="del(${bm.id})">删除</button>
</td>
</tr
</#list>
<tr>
<td colspan="100">
<a href="/list?pageNum=1">首页</a>
<a href="/list?pageNum=${info.pageNum-1}">上一页</a>
<a href="/list?pageNum=${info.pageNum+1}">下一页</a>
<a href="/list?pageNum=${info.pages}">尾页</a>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="/css/bootstrap.css" rel="stylesheet">
</head>
<body>
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script type="text/javascript">
$(function() {
$.get("selectZy",function (list) {
for (var i in list) {
$("#td").append("+list[i].zyname+"")
$("#tt").val(list[i].xf)
}
})
})
function ph() {
var x=document.getElementById("phone");
var reg=/^[11]$/;
if (reg.test(x)){
alert("格式正确")
return true;
}else{
alert("格式正确")
return true;
}
}
</script>
<form action="/add" method="get">
<table class="table">
<tr>
<td>学生姓名</td>
<td>
<input type="text" name="name">
</td>
</tr>
<tr>
<td>性别</td>
<td>
<input type="radio" name="sex" value="1" checked>男
<input type="radio" name="sex" value="2">女
</td>
</tr>
<tr>
<td>出生日期</td>
<td>
<input type="date" name="birth">
</td>
</tr>
<tr>
<td>联系电话</td>
<td>
<input type="text" name="phone" onblur="ph()">
</td>
</tr>
<tr>
<td>专业</td>
<td>
<select id="td" name="sid">
</select>
</td>
</tr>
<tr>
<td>学费</td>
<td>
<input type="text" id="tt" >
</td>
</tr>
<tr>
<td>住宿费</td>
<td>
<input type="text" name="zsf">
</td>
</tr>
<tr>
<td>报名费</td>
<td>
<input type="text" name="bmf">
</td>
</tr>
<tr>
<td colspan="10">
<button>保存</button>
</td>
</tr>
</table>
</form>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="/css/bootstrap.css" rel="stylesheet">
</head>
<body>
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script type="text/javascript">
$(function() {
$.get("selectZy",function (list) {
for (var i in list) {
if(${
info.sid}==list[i].zid){
$("#td").append("+list[i].zyname+"")
}else{
$("#td").append("+list[i].zyname+"")
}
}
})
})
</script>
<form action="/update" method="get">
<table class="table">
<tr>
<td>学生姓名</td>
<td>
<input type="hidden" name="id" value="${info.id}">
<input type="text" name="name" value="${info.name}">
</td>
</tr>
<tr>
<td>性别</td>
<td>
<#if (info.sex?? && info.sex==1)>
<input type="radio" name="sex" checked value="1">男
<input type="radio" name="sex" value="2">女
<#else>
<input type="radio" name="sex" value="1">男
<input type="radio" name="sex" checked value="2">女
</#if>
</td>
</tr>
<tr>
<td>出生日期</td>
<td>
<input type="text" name="birth" value="${info.birth?date}">
</td>
</tr>
<tr>
<td>联系电话</td>
<td>
<input type="text" name="phone" value="${info.phone}">
</td>
</tr>
<tr>
<td>专业</td>
<td>
<select id="td" name="sid">
</select>
</td>
</tr>
<tr>
<td>住宿费</td>
<td>
<input type="text" name="zsf" value="${info.zsf}">
</td>
</tr>
<tr>
<td>报名费</td>
<td>
<input type="text" name="bmf" value="${info.bmf}">
</td>
</tr>
<tr>
<td colspan="10">
<button>保存</button>
</td>
</tr>
</table>
</form>
</body>
</html>
package com.wpx.controller;
import com.github.pagehelper.PageInfo;
import com.wpx.pojo.Bm;
import com.wpx.pojo.Zy;
import com.wpx.service.BmService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Controller
public class BmController {
@Autowired
BmService bmService;
@RequestMapping("list")
public String list(@RequestParam(value = "pageNum",defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize",defaultValue = "5")Integer pageSize, Bm bm, ModelMap modelMap){
PageInfo<Bm> list = bmService.list(pageNum, pageSize, bm);
List<Zy> zies = bmService.selectZy();
modelMap.addAttribute("info",list);
modelMap.addAttribute("bm",bm);
modelMap.addAttribute("hh",zies);
return "list";
}
@RequestMapping("toAdd")
public String toAdd(){
return "add";
}
@RequestMapping("toUpdate")
public String toUpdate(Integer id,ModelMap modelMap){
Bm bm= bmService.toUpdate(id);
modelMap.addAttribute("info",bm);
return "update";
}
@GetMapping("selectZy")
@ResponseBody
public List<Zy> selectZy(){
return bmService.selectZy();
}
@RequestMapping("add")
public String add(Bm bm){
int i= bmService.add(bm);
return "redirect:list";
}
@RequestMapping("update")
public String update(Bm bm){
int i= bmService.update(bm);
return "redirect:list";
}
@PostMapping("delete")
@ResponseBody
public boolean delete(Integer id){
int i=bmService.delete(id);
return i>0;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/css/bootstrap.css">
</head>
<body>
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script type="text/javascript">
function choose(own) {
$("[name=check]").attr("checked",own.checked);
}
function fx() {
$("[name='check']").each(function() {
if($(this).attr("checked"))
{
$(this).attr("checked", false);
}
else
{
$(this).attr("checked", true);
}
});
}
function del(id) {
if(confirm("确定要删除id为"+id+"吗")){
$.post(
"del",
{
id:id},
function(obj) {
if(obj){
alert("删除成功");
location.reload();
}else{
alert("删除失败");
return;
}
},
"json"
)
}
}
</script>
<button onclick="fx()">反选</button>
<form action="/student/list" method="post">
入学时间:<input type="date" name="t1" >-
<input type="date" name="t2" >
<button>查询</button>
</form>
<a href="/student/toAdd"><button>添加</button></a>
<table class="table">
<thead>
<tr>
<th>
<input type="checkbox" onclick="choose(this)">
</th>
<th>学生姓名</th>
<th>性别</th>
<th>所在班级</th>
<th>入学日期</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<#list info.list as m>
<tr>
<td>
<input type="checkbox" name="check" value="${m.id}">
</td>
<td>${
m.name!}</td>
<td>${
m.sex!}</td>
<td>${
(m.aclass.name)!}</td>
<td>${
m.dt!}</td>
<td>
<input type="button" value="删除" onclick="del(${m.id})">
<a href="/student/toUpdate?id=#{m.id}"><button>修改</button></a>
</td>
</tr>
</#list>
<tr>
<td colspan="10">
当前是${
info.pageNum}/共有${
info.pages}页---共有${
info.total}条数据<br>
<a href="/student/list?pageNum=1">首页</a>
<a href="/student/list?pageNum=${info.prePage}">上一页</a>
<a href="/student/list?pageNum=${info.nextPage}">下一页</a>
<a href="/student/list?pageNum=${info.pages}">尾页</a>
</td>
</tr>
</tbody>
</table>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="/css/bootstrap.css" rel="stylesheet">
</head>
<body>
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<form action="/student/add" method="post">
姓名:<input type="text" name="name" id="name"><br>
性别:<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女<br>
班级<select name="cid">
<#list clazzes as c>
<option value="${c.id}">${
c.name}</option>
</#list>
</select><br>
时间:<input type="date" name="dt">
<button>添加</button>
</form>
</body>
</html>