SpringBoot整合Mybatis(mapper代理)的增删查改
首先想要实现查询基本信息这个功能,需要先把环境配置好,这里就不对环境的配置进行阐述了,直接开始代码的部分。先说一下我的配置环境,我使用的是:
1.eclipse java-ee
2.jdk是1.8版本
3.mysql8.0.16
(1)创建项目的步骤省略,首先是在项目下创建相应的包:
1.domain(实体类包)
2.mapper(持久层包)
3.service(业务层包)
4.controller(控制层包)
5.mapper文件夹,因为使用的是mapper代理的方式
6.在/resources的路径下创建数据源文件:application.yml
(2)创建mysql数据库,并连接,为了方便演示,这里只创建一个表。
1.数据库的名字是:school;表:student。字段如下:
2.连接数据库:在刚刚创建的数据源文件:application.yml中输入下面代码。
server:
port: 8080
spring:
datasource:
name:
url: jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC
username: root
password: 123456
mybatis:
mapper-locations: classpath:mapper/*.xml
(3)开始编写代码。
1.实体类部分:在domain的包下创建“StudentDomain.java”,代码如下:
package com.fsj.domain;
public class StudentDomain {
private int sno;
private String sname;
private String sex;
private String sclass;
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSclass() {
return sclass;
}
public void setSclass(String sclass) {
this.sclass = sclass;
}
@Override
public String toString() {
return "StudentDomain [sno=" + sno + ", sname=" + sname + ", sex=" + sex + ", sclass=" + sclass + "]";
}
}
2.持久层部分:在mapper的包下创建一个接口:“StudentMapper.java” ,代码如下:
package com.fsj.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.fsj.domain.StudentDomain;
// **这是mapper注解,不要忘了**
@Mapper
public interface StudentMapper {
//**定义查询所有学生信息的方法**
List<StudentDomain> getAll();
//根据sno删除用户
void delete(int sno);
//更新学生信息
void update(StudentDomain studentDomain);
//添加学生信息
void newstudent(StudentDomain studentDomain);
}
3.在mapper文件夹下面创建一个配置文件:“StudentMapper.xml” ,与持久层(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包所在的路径,建立映射关系 -->
<mapper namespace="com.fsj.mapper.StudentMapper">
<!-- parameterType是输入参数的类型,resultType是输出结果的类型,根据不同的需要使用不同的类型 -->
<!-- 查询所有学生信息 其中id填的是StudentMapper.java的方法名,查询只有输出,没有输入,输出的是一个实体-->
<select id="getAll" resultType="com.fsj.domain.StudentDomain">
select * from student
</select>
<!-- 删除学生信息 -->
<delete id="delete" parameterType="com.fsj.domain.StudentDomain">
DELETE FROM student WHERE sno = #{
sno}
</delete>
<!--更新学生信息-->
<update id="update" parameterType="com.fsj.domain.StudentDomain">
UPDATE
student
SET sno = #{
sno},sname = #{
sname},sex = #{
sex},sclass = #{
sclass}
WHERE sno = #{
sno}
</update>
<!-- 添加学生信息 -->
<insert id="newstudent" parameterType="com.fsj.domain.StudentDomain">
INSERT INTO
student(sno,sname,sex,sclass)
VALUES
(#{
sno},#{
sname},#{
sex},#{
sclass})
</insert>
</mapper>
4.业务层部分:在service的包下创建:“StudentService.java” ,代码如下:
package com.fsj.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fsj.domain.StudentDomain;
import com.fsj.mapper.StudentMapper;
@Service
public class StudentService {
@Autowired
StudentMapper studentMapper;
//查询所有的学生信息
public List<StudentDomain> getAll() {
return studentMapper.getAll();
}
//删除学生信息
public void delete(int sno){
studentMapper.delete(sno);
}
//更新学生信息
public void update(StudentDomain studentDomain){
studentMapper.update(studentDomain);
}
//添加学生信息
public void newstudent(StudentDomain studentDomain){
studentMapper.newstudent(studentDomain);
}
}
5.控制层部分:在controller的包下创建:“StudentController.java” ,代码如下:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.fsj.domain.StudentDomain;
import com.fsj.service.StudentService;
@RestController
@RequestMapping("/student")
public class StudentController {
@Autowired
StudentService studentService;
//查询所有学生信息
@RequestMapping("/getAll")
public List<StudentDomain> getAll(){
// 顾名思义 实体和数据 同时返回页面和数据
List<StudentDomain> studentDomain = studentService.getAll();
return studentDomain;
}
//删除学生信息
@RequestMapping(value = "/delete/{sno}" ,method = RequestMethod.DELETE)
public void de