ToB企服应用市场:ToB评测及商务社交产业平台
标题:
2、springboot+mybatis+ajax+pageHelper+idea+maven(全套增删改查)
[打印本页]
作者:
科技颠覆者
时间:
2022-9-16 17:22
标题:
2、springboot+mybatis+ajax+pageHelper+idea+maven(全套增删改查)
0.构建项目
1、项目结构如下
2、编辑pom.xml文件配置依赖
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包下创建持久化类
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 String dname ;
13 private String loc ;
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.java
1 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 Emp implements Serializable{
12 private Integer empno ;
13 private String ename ;
14 private String job ;
15 private Integer mgr ;
16 private String hiredate ;
17 private Double sal ;
18 private Double comm ;
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包下创建映射接口
1 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.java
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包下创建业务层接口和实现类
1 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.java
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.java
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.java
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
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文件
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.xml
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 <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 INSERT INTO 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文件夹下编辑核心属性文件
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=mysql
复制代码
application.properties10、在resouces目录下的static文件夹下创建js目录,且将jquery的库文件jquery-1.8.3.js拷贝进去
11、在resouces目录下的static文件夹下main.html文件
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文件
[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
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4