idea简单的一对一增删改查

idea简单的一对一增删改查

代码生成器

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;

/**
 * <p>
 * 
 * </p>
 *
 * @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;

/**
 * <p>
 * 
 * </p>
 *
 * @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;


}

Mapper

package com.nxy.mapper;

import com.nxy.entity.Classes;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @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;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @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);
}


service

package com.nxy.service;

import com.nxy.entity.Classes;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @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;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @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);
}

ServiceImpl

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;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @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;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @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);
    }
}

Mapper.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="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>


Controller层

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;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @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";
    }

}

application.properties

#应用配置
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


前台List

<!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>

前台Add

<!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>

前台LUpdate

<!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>

pom.xml

<?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>

在这里插入图片描述

one前台

<!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("<option value='"+list[i].zid+"'>"+list[i].zyname+"</option>")
                $("#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("<option value='"+list[i].zid+"' selected>"+list[i].zyname+"</option>")
                }else{
                    $("#td").append("<option value='"+list[i].zid+"' >"+list[i].zyname+"</option>")
                }
            }
        })
    })
</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>

Controller

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;
    }
}

0526

<!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>

ADD

<!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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值