科技颠覆者 发表于 2022-9-16 17:22:43

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

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