2、springboot+mybatis+ajax+pageHelper+idea+maven(全套增删改查) ...

打印 上一主题 下一主题

主题 917|帖子 917|积分 2751

0.构建项目

 

 
 
 
 
 
1、项目结构如下
 
 2、编辑pom.xml文件配置依赖
  1. 1 <?xml version="1.0" encoding="UTF-8"?>
  2. 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. 4     <modelVersion>4.0.0</modelVersion>
  5. 5     <parent>
  6. 6         <groupId>org.springframework.boot</groupId>
  7. 7         <artifactId>spring-boot-starter-parent</artifactId>
  8. 8         <version>2.7.3</version>
  9. 9         <relativePath/>
  10. 10     </parent>
  11. 11     <groupId>com</groupId>
  12. 12     <artifactId>sbmxmlday5002</artifactId>
  13. 13     <version>0.0.1-SNAPSHOT</version>
  14. 14     <name>sbmxmlday5002</name>
  15. 15     <description>Demo project for Spring Boot</description>
  16. 16     <properties>
  17. 17         <java.version>1.8</java.version>
  18. 18     </properties>
  19. 19
  20. 20     <dependencies>
  21. 21         <dependency>
  22. 22             <groupId>org.springframework.boot</groupId>
  23. 23             <artifactId>spring-boot-starter-jdbc</artifactId>
  24. 24         </dependency>
  25. 25         <dependency>
  26. 26             <groupId>org.springframework.boot</groupId>
  27. 27             <artifactId>spring-boot-starter-web</artifactId>
  28. 28         </dependency>
  29. 29         <dependency>
  30. 30             <groupId>org.mybatis.spring.boot</groupId>
  31. 31             <artifactId>mybatis-spring-boot-starter</artifactId>
  32. 32             <version>2.2.2</version>
  33. 33         </dependency>
  34. 34
  35. 35         <dependency>
  36. 36             <groupId>mysql</groupId>
  37. 37             <artifactId>mysql-connector-java</artifactId>
  38. 38             <version>5.1.38</version>
  39. 39         </dependency>
  40. 40
  41. 41         
  42. 42         
  43. 43         <dependency>
  44. 44             <groupId>com.github.pagehelper</groupId>
  45. 45             <artifactId>pagehelper-spring-boot-starter</artifactId>
  46. 46             <version>1.4.1</version>
  47. 47         </dependency>
  48. 48
  49. 49         <dependency>
  50. 50             <groupId>org.springframework.boot</groupId>
  51. 51             <artifactId>spring-boot-starter-test</artifactId>
  52. 52             <scope>test</scope>
  53. 53         </dependency>
  54. 54
  55. 55     </dependencies>
  56. 56
  57. 57     <build>
  58. 58         <plugins>
  59. 59             <plugin>
  60. 60                 <groupId>org.springframework.boot</groupId>
  61. 61                 <artifactId>spring-boot-maven-plugin</artifactId>
  62. 62             </plugin>
  63. 63         </plugins>
  64. 64     </build>
  65. 65
  66. 66 </project>
复制代码
pom.xml3、在java目录下的com.pojo包下创建持久化类
  1. 1 package com.pojo;
  2. 2 import org.springframework.stereotype.Component;
  3. 3
  4. 4 import java.io.Serializable;
  5. 5
  6. 6 /**
  7. 7  * 一方引用多方list集合
  8. 8  */
  9. 9 @Component
  10. 10 public class Dept implements Serializable {
  11. 11   private Integer deptno   ;
  12. 12   private String  dname    ;
  13. 13   private String  loc          ;
  14. 14
  15. 15   public Dept() {
  16. 16   }
  17. 17
  18. 18   public Dept(Integer deptno, String dname, String loc) {
  19. 19     this.deptno = deptno;
  20. 20     this.dname = dname;
  21. 21     this.loc = loc;
  22. 22   }
  23. 23
  24. 24   public Integer getDeptno() {
  25. 25     return deptno;
  26. 26   }
  27. 27
  28. 28   public void setDeptno(Integer deptno) {
  29. 29     this.deptno = deptno;
  30. 30   }
  31. 31
  32. 32
  33. 33   public String getDname() {
  34. 34     return dname;
  35. 35   }
  36. 36
  37. 37   public void setDname(String dname) {
  38. 38     this.dname = dname;
  39. 39   }
  40. 40
  41. 41
  42. 42   public String getLoc() {
  43. 43     return loc;
  44. 44   }
  45. 45
  46. 46   public void setLoc(String loc) {
  47. 47     this.loc = loc;
  48. 48   }
  49. 49
  50. 50   @Override
  51. 51   public String toString() {
  52. 52     return "Dept{" +
  53. 53             "deptno=" + deptno +
  54. 54             ", dname='" + dname + '\'' +
  55. 55             ", loc='" + loc + '\'' +
  56. 56             '}';
  57. 57   }
  58. 58 }
复制代码
Dept.java
  1.   1 package com.pojo;
  2.   2
  3.   3 import org.springframework.stereotype.Component;
  4.   4
  5.   5 import java.io.Serializable;
  6.   6
  7.   7 /**
  8.   8  * 多方引用一方对象
  9.   9  */
  10. 10 @Component
  11. 11 public class Emp  implements Serializable{
  12. 12   private Integer empno             ;
  13. 13   private String  ename           ;
  14. 14   private String  job         ;
  15. 15   private Integer mgr           ;
  16. 16   private String  hiredate           ;
  17. 17   private Double  sal         ;
  18. 18   private Double  comm               ;
  19. 19   private Dept dept;
  20. 20
  21. 21
  22. 22   public Emp() {
  23. 23   }
  24. 24
  25. 25   public Emp(Integer empno, String ename, String job, Integer mgr, String hiredate, Double sal, Double comm, Dept dept) {
  26. 26     this.empno = empno;
  27. 27     this.ename = ename;
  28. 28     this.job = job;
  29. 29     this.mgr = mgr;
  30. 30     this.hiredate = hiredate;
  31. 31     this.sal = sal;
  32. 32     this.comm = comm;
  33. 33     this.dept = dept;
  34. 34   }
  35. 35
  36. 36   public Integer getEmpno() {
  37. 37     return empno;
  38. 38   }
  39. 39
  40. 40   public void setEmpno(Integer empno) {
  41. 41     this.empno = empno;
  42. 42   }
  43. 43
  44. 44
  45. 45   public String getEname() {
  46. 46     return ename;
  47. 47   }
  48. 48
  49. 49   public void setEname(String ename) {
  50. 50     this.ename = ename;
  51. 51   }
  52. 52
  53. 53
  54. 54   public String getJob() {
  55. 55     return job;
  56. 56   }
  57. 57
  58. 58   public void setJob(String job) {
  59. 59     this.job = job;
  60. 60   }
  61. 61
  62. 62
  63. 63   public Integer getMgr() {
  64. 64     return mgr;
  65. 65   }
  66. 66
  67. 67   public void setMgr(Integer mgr) {
  68. 68     this.mgr = mgr;
  69. 69   }
  70. 70
  71. 71
  72. 72   public String getHiredate() {
  73. 73     return hiredate;
  74. 74   }
  75. 75
  76. 76   public void setHiredate(String hiredate) {
  77. 77     this.hiredate = hiredate;
  78. 78   }
  79. 79
  80. 80
  81. 81   public Double getSal() {
  82. 82     return sal;
  83. 83   }
  84. 84
  85. 85   public void setSal(Double sal) {
  86. 86     this.sal = sal;
  87. 87   }
  88. 88
  89. 89
  90. 90   public Double getComm() {
  91. 91     return comm;
  92. 92   }
  93. 93
  94. 94   public void setComm(Double comm) {
  95. 95     this.comm = comm;
  96. 96   }
  97. 97
  98. 98   public Dept getDept() {
  99. 99     return dept;
  100. 100   }
  101. 101
  102. 102   public void setDept(Dept dept) {
  103. 103     this.dept = dept;
  104. 104   }
  105. 105
  106. 106   @Override
  107. 107   public String toString() {
  108. 108     return "Emp{" +
  109. 109             "empno=" + empno +
  110. 110             ", ename='" + ename + '\'' +
  111. 111             ", job='" + job + '\'' +
  112. 112             ", mgr=" + mgr +
  113. 113             ", hiredate='" + hiredate + '\'' +
  114. 114             ", sal=" + sal +
  115. 115             ", comm=" + comm +
  116. 116             ", dept=" + dept +
  117. 117             '}';
  118. 118   }
  119. 119 }
复制代码
Emp.java4、在java目录下的com.mapper包下创建映射接口
  1. 1 package com.mapper;
  2. 2 import com.pojo.Dept;
  3. 3
  4. 4 import java.util.List;
  5. 5
  6. 6 public interface DeptMapper {
  7. 7     List<Dept> selectAllDept();
  8. 8 }
复制代码
DeptMapper.java
  1. 1 package com.mapper;
  2. 2 import com.pojo.Emp;
  3. 3
  4. 4 import java.util.List;
  5. 5
  6. 6 public interface EmpMapper {
  7. 7     List<Emp> selectEmp(Emp emp);
  8. 8     int insertEmp(Emp emp);
  9. 9     int updateEmp(Emp emp);
  10. 10     int deleteEmp(Emp emp);
  11. 11 }
复制代码
EmpMapper.java5、在java目录下的com.service包下创建业务层接口和实现类
  1. 1 package com.service;
  2. 2
  3. 3 import com.pojo.Dept;
  4. 4
  5. 5 import java.util.List;
  6. 6
  7. 7 public interface DeptService {
  8. 8     List<Dept> downOption();
  9. 9 }
复制代码
DeptService.java
  1. 1 package com.service;
  2. 2
  3. 3 import com.mapper.DeptMapper;
  4. 4 import com.pojo.Dept;
  5. 5 import org.springframework.beans.factory.annotation.Autowired;
  6. 6 import org.springframework.stereotype.Service;
  7. 7
  8. 8 import java.util.List;
  9. 9
  10. 10 @Service
  11. 11 public class DeptServiceImpl implements DeptService{
  12. 12     @Autowired
  13. 13     private DeptMapper deptMapper;
  14. 14
  15. 15
  16. 16     @Override
  17. 17     public List<Dept> downOption() {
  18. 18         return deptMapper.selectAllDept();
  19. 19     }
  20. 20 }
复制代码
DeptServiceImpl.java
  1. 1 package com.service;
  2. 2
  3. 3 import com.github.pagehelper.PageInfo;
  4. 4 import com.pojo.Emp;
  5. 5
  6. 6 import java.util.List;
  7. 7
  8. 8 public interface EmpService {
  9. 9     List<Emp> show(Emp emp);
  10. 10     PageInfo<Emp> showPage(Integer pageno, Integer pagesize, Emp emp);
  11. 11     int add(Emp emp);
  12. 12     int edit(Emp emp);
  13. 13     int del(Emp emp);
  14. 14 }
复制代码
EmpService.java
  1. 1 package com.service;
  2. 2
  3. 3 import com.github.pagehelper.PageHelper;
  4. 4 import com.github.pagehelper.PageInfo;
  5. 5 import com.mapper.EmpMapper;
  6. 6 import com.pojo.Emp;
  7. 7 import org.springframework.beans.factory.annotation.Autowired;
  8. 8 import org.springframework.stereotype.Service;
  9. 9 import org.springframework.transaction.annotation.Transactional;
  10. 10
  11. 11 import java.util.List;
  12. 12
  13. 13 /*
  14. 14 @Service的功能等同于代理对象在spring的xml文件中动态添加bean节点,
  15. 15 如果不指定名称,则底层代理在构建bean节点的时候id是类的第一个首字母小写
  16. 16 <bean id="empServiceImpl" />
  17. 17 @Service(value = "empse")的功能等同于代理对象在spring的xml文件中动态添加id值为empse的bean节点
  18. 18 <bean id="empse" />
  19. 19 */
  20. 20 @Service
  21. 21 @Transactional
  22. 22 public class EmpServiceImpl implements EmpService {
  23. 23     /*
  24. 24     @Autowired是spring的资源包下注解,按照对象的类型进行自动注入,
  25. 25     和对象名称无关,只要类型是匹配的,代理就会在你需要的时候给你注入对象值
  26. 26     @Resource是javax包下的注解,按照对象属性名进行注入,
  27. 27     和对象名称关系密切,如果对象名称不匹配,则不能完成注入,会报错
  28. 28     总结:相比而言,使用@Resource的出错记录更大,因此我们常规选择使用@Autowired
  29. 29      */
  30. 30     @Autowired
  31. 31     private EmpMapper empMapper;
  32. 32
  33. 33      // ★★★★
  34. 34     @Override
  35. 35     public PageInfo<Emp> showPage(Integer pageno, Integer pagesize, Emp emp) {
  36. 36         //封装分页参数值
  37. 37          PageHelper.startPage(pageno,pagesize);
  38. 38         //查询所有
  39. 39         List<Emp> empList=empMapper.selectEmp(emp);
  40. 40         //返回根据分页集合对象再进行分页
  41. 41         return new PageInfo<Emp>(empList);
  42. 42     }
  43. 43
  44. 44     @Override
  45. 45     public List<Emp> show(Emp emp) {
  46. 46         return empMapper.selectEmp(emp);
  47. 47     }
  48. 48
  49. 49     @Override
  50. 50     public int add(Emp emp) {
  51. 51         return empMapper.insertEmp(emp);
  52. 52     }
  53. 53
  54. 54     @Override
  55. 55     public int edit(Emp emp) {
  56. 56         return empMapper.updateEmp(emp);
  57. 57     }
  58. 58
  59. 59     @Override
  60. 60     public int del(Emp emp) {
  61. 61         return empMapper.deleteEmp(emp);
  62. 62     }
  63. 63 }
复制代码
EmpServiceImpl.java6、在java目录下的com.controller包下创建控制类CenterController.java
  1. 1 package com.controller;
  2. 2
  3. 3 import com.github.pagehelper.PageInfo;
  4. 4 import com.pojo.Dept;
  5. 5 import com.pojo.Emp;
  6. 6 import com.service.DeptService;
  7. 7 import com.service.EmpService;
  8. 8 import org.springframework.beans.factory.annotation.Autowired;
  9. 9 import org.springframework.stereotype.Controller;
  10. 10 import org.springframework.ui.Model;
  11. 11 import org.springframework.web.bind.annotation.RequestMapping;
  12. 12 import org.springframework.web.bind.annotation.ResponseBody;
  13. 13 import org.springframework.web.bind.annotation.RestController;
  14. 14
  15. 15 import javax.servlet.http.HttpSession;
  16. 16 import java.util.HashMap;
  17. 17 import java.util.List;
  18. 18 import java.util.Map;
  19. 19
  20. 20 @RestController
  21. 21 public class CenterController {
  22. 22     @Autowired
  23. 23     private DeptService deptService;
  24. 24
  25. 25     @Autowired
  26. 26     private EmpService empService;
  27. 27
  28. 28     @RequestMapping("/option.do")
  29. 29     public List<Dept> optionData(){
  30. 30         return deptService.downOption();
  31. 31     }
  32. 32     @RequestMapping("/page.do")
  33. 33     public PageInfo<Emp> showPage(Integer pageno,Emp emp){
  34. 34         return empService.showPage(pageno,3,emp);
  35. 35     }
  36. 36
  37. 37     //因为修改页面需要下拉列表和对象给表单value赋值,因此回调时携带一个对象一个集合,因此用map
  38. 38     @RequestMapping("/info.do")
  39. 39     public Map<String,Object> info(Emp emp){
  40. 40         Map<String,Object> map=new HashMap<String,Object>();
  41. 41         map.put("info",empService.show(emp).get(0));
  42. 42         map.put("deptlist",deptService.downOption());
  43. 43         return map;
  44. 44     }
  45. 45     @RequestMapping("/edit.do")
  46. 46     public int edit(Emp emp){
  47. 47         return empService.edit(emp);
  48. 48     }
  49. 49     @RequestMapping("/add.do")
  50. 50     public int add(Emp emp){
  51. 51         return empService.add(emp);
  52. 52     }
  53. 53
  54. 54     @RequestMapping("/del.do")
  55. 55     public int del(Emp emp){
  56. 56         return empService.del(emp);
  57. 57     }
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62 }
复制代码
CenterController.java7、在resouces目录下mapper文件夹下创建映射xml文件
  1. 1 <?xml version="1.0" encoding="UTF-8" ?>
  2. 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. 3
  4. 4
  5. 5
  6. 6 <mapper namespace="com.mapper.DeptMapper">
  7. 7      <select id="selectAllDept" resultType="Dept">
  8. 8           select * from dept
  9. 9      </select>
  10. 10 </mapper>
复制代码
DeptMapper.xml
  1.   1 <?xml version="1.0" encoding="UTF-8" ?>
  2.   2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3.   3 <mapper namespace="com.mapper.EmpMapper">
  4.   4   
  5. 21     
  6. 22     
  7. 23     
  8. 24     <select id="selectEmp" resultMap="empmap" parameterType="Emp">
  9. 25          select d.dname,d.loc,e.* from emp e,dept d where e.deptno=d.deptno
  10. 26          <if test="empno!=null">
  11. 27              and e.empno=#{empno}
  12. 28          </if>
  13. 29          <if test="ename!=null">
  14. 30              and e.ename=#{ename}
  15. 31          </if>
  16. 32          <if test="job!=null">
  17. 33              and e.job=#{job}
  18. 34          </if>
  19. 35          <if test="dept!=null and dept.deptno!=null and dept.deptno!=-1">
  20. 36              and e.deptno=#{dept.deptno}
  21. 37          </if>
  22. 38     </select>
  23. 39
  24. 40     <resultMap id="empmap" type="Emp">
  25. 41         
  26. 42         <id column="EMPNO" property="empno"/>
  27. 43         <result column="ENAME" property="ename"/>
  28. 44         <result column="JOB " property="job"/>
  29. 45         <result column="MGR" property="mgr"/>
  30. 46         <result column="HIREDATE" property="hiredate"/>
  31. 47         <result column="SAL" property="sal"/>
  32. 48         <result column="COMM" property="comm"/>
  33. 49
  34. 50         
  35. 51         
  36. 52         
  37. 53         
  38. 54         <association property="dept" javaType="Dept" column="DEPTNO">
  39. 55            
  40. 56             <id column="DEPTNO" property="deptno"/>
  41. 57             <result column="DNAME" property="dname"/>
  42. 58             <result column="LOC" property="loc"/>
  43. 59         </association>
  44. 60     </resultMap>
  45. 61
  46. 62     <insert id="insertEmp" parameterType="Emp">
  47. 63          INSERT  INTO emp(empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES(#{empno},#{ename},#{job},#{mgr},#{hiredate},#{sal},#{comm},#{dept.deptno})
  48. 64     </insert>
  49. 65
  50. 66     
  51. 67     <update id="updateEmp" parameterType="Emp">
  52. 68         UPDATE emp
  53. 69         <set>
  54. 70             <if test="ename!=null">
  55. 71                 ename=#{ename} ,
  56. 72             </if>
  57. 73             <if test="job!=null">
  58. 74                 job=#{job} ,
  59. 75             </if>
  60. 76             <if test="mgr!=null">
  61. 77                    mgr=#{mgr} ,
  62. 78             </if>
  63. 79             <if test="hiredate!=null">
  64. 80                 hiredate=#{hiredate} ,
  65. 81             </if>
  66. 82             <if test="sal!=null">
  67. 83                  sal=#{sal},
  68. 84             </if>
  69. 85             <if test="comm!=null">
  70. 86                comm=#{comm},
  71. 87             </if>
  72. 88             <if test="dept!=null and dept.deptno!=null">
  73. 89                deptno=#{dept.deptno}  ,
  74. 90             </if>
  75. 91         </set>
  76. 92         <include refid="wherecondition"/>
  77. 93     </update>
  78. 94
  79. 95     <delete id="deleteEmp" parameterType="Emp">
  80. 96         delete from emp
  81. 97         <include refid="wherecondition"/>
  82. 98     </delete>
  83. 99
  84. 100      
  85. 101    <sql id="wherecondition">
  86. 102        <where>
  87. 103            <if test="empno!=null">
  88. 104                empno=#{empno}
  89. 105            </if>
  90. 106        </where>
  91. 107    </sql>
  92. 108
  93. 109 </mapper>
复制代码
EmpMapper.xml8、在resouces目录下mapper文件夹下编辑核心属性文件
  1. 1 server.port=9090
  2. 2
  3. 3 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  4. 4 spring.datasource.url=jdbc:mysql://localhost:3306/ar
  5. 5 spring.datasource.username=root
  6. 6 spring.datasource.password=123456
  7. 7
  8. 8 mybatis.type-aliases-package=com.pojo
  9. 9
  10. 10 mybatis.mapper-locations=classpath:mapper/*.xml
  11. 11
  12. 12 pagehelper.helper-dialect=mysql
复制代码
application.properties10、在resouces目录下的static文件夹下创建js目录,且将jquery的库文件jquery-1.8.3.js拷贝进去
11、在resouces目录下的static文件夹下main.html文件
  1. 1 <!DOCTYPE html>
  2. 2 <html lang="en">
  3. 3 <head>
  4. 4     <meta charset="UTF-8">
  5. 5     <title>Title</title>
  6. 6     
  7. 7     
  8. 8 </head>
  9. 9 <body>
  10. 10 <a target="_blank" href="https://www.cnblogs.com/add.html">添加</a>
  11. 11
  12. 12     <select name="dept.deptno" id="deptno"></select>
  13. 13     <input type="button" value="查询">
  14. 14
  15. 15 <table></table>
  16. 16 <p id="pageroot"></p>
  17. 17 </body>
  18. 18 </html>
复制代码
main.html12、在resouces目录下的static文件夹的js目录下创建main.js文件
[code]  1 $(function () {  2     //下拉列表数据  3     optionData();  4     //初始化查询所有  5     initData(1,-1);  6   7     $("[type=button]").click(function () {  8         var deptno=$("#deptno").val();  9         alert(deptno); 10         initData(1,deptno); 11     }); 12 }); 13  14 function optionData() { 15     $.ajax({ 16         url:"option.do", 17         type:"post", 18         dataType:"json", 19         data:{}, 20         async:true, 21         success:function (obj) { 22             //将值打印在控制台 23             console.log(obj); 24             $("select").html(" "); 25             var str="--请选择--"; 26             for(var i=0;i1){ 74                 pagestr+="首页"; 75                 pagestr+="  "; 76                 pagestr+="上一页"; 77                 pagestr+="  "; 78             }else{ 79                 pagestr+="首页"; 80                 pagestr+="  "; 81                 pagestr+="上一页"; 82                 pagestr+="  "; 83             } 84             if(pageno

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表