赞
踩
Controller是控制器,负责接收并处理客户端请求,并返回结果。(用注释如GetMapping、PostMapping、DeleteMapping等,利用mapper、service类写函数)
Service是服务,负责业务逻辑处理。(利用mapper写函数,比controller有逻辑)
Mapper是映射器,负责将数据从数据库映射到应用程序中,或者将应用程序中的数据映射到数据库中。(基于注解写SQL语句)
统一给注解加前缀,如下
此时直接访问9090端口无法访问,需要在网址后加"/user/"才能正常访问到页面,如图
可以把前台传来的json对象转换成后台的Java对象
在Mapper类中定义接口函数
控制类中往往使用Post方法
deleteMapping中的字符需要与形参中的id 一 一 对 应!不能写错
Mapper中对应部分
其中1和2对应名称必须相同,3可以有不同
测试(用postman)
即把id为3的数据成功删除
打开postman,点击加号
选择post,输入url,输入信息,点击send
即可出现一条数据被修改
数据库中即可查询到刚添加的数据信息
把service类注入到spring容器中
为了方便一块实现修改和添加,可以用id判断是否存在该数据,没有的话选择添加操作,有的话选择修改操作
代码如下,其中插入操作对应UserMapper类中的insert,修改操作对应下面的动态SQL语句
package com.ww.car.service; import com.ww.car.entity.User; import com.ww.car.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private UserMapper userMapper; public int save(User user){ if(user.getId()==null){ //没有id,则新增 return userMapper.insert(user); }else{ // 有id,则修改 return userMapper.update(user); } } }
在resource中新增文件夹mapper,在其中新建User.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.ww.car.mapper.UserMapper"> <update id="update"> update sys_user <set> <if test="username != null"> username = #{username}, </if> <!-- <if test="password != null">--> <!-- password = #{password},--> <!-- </if>--> <if test="nickname != null"> nickname = #{nickname}, </if> <if test="email != null"> email = #{email}, </if> <if test="phone != null"> phone = #{phone}, </if> <if test="address != null"> address = #{address}, </if> </set> <where> id = #{id} </where> </update> </mapper>
设置可选择的set
即只有username(或其他属性)不为空时才会执行赋值语句
其中的namespace部分可依据下图步骤复制
update中的id必须要跟mapper中的函数名保持一致
(Mapper中函数)
用Postman测试,报错500
在yml文件中加上mapper配置即可
全部代码
UserMapper
package com.ww.car.mapper; import com.ww.car.entity.User; import org.apache.ibatis.annotations.*; import java.util.List; @Mapper public interface UserMapper { @Select("select * from sys_user") List<User> findAll(); @Insert("insert into sys_user(username,password,nickname,email,phone,address) values(#{username},#{password}," + "#{nickname},#{email},#{phone},#{address})") public Integer insert(User user); int update(User user); @Delete("delete from sys_user where id = #{id}") Integer deleteById(@Param("id") Integer id); }
UserService
package com.ww.car.service; import com.ww.car.entity.User; import com.ww.car.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private UserMapper userMapper; public int save(User user){ if(user.getId()==null){ //没有id,则新增 return userMapper.insert(user); }else{ // 有id,则修改 return userMapper.update(user); } } }
UserController
package com.ww.car.controller; import com.ww.car.entity.User; import com.ww.car.mapper.UserMapper; import com.ww.car.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/user") public class UserController { @Autowired private UserMapper userMapper; @Autowired private UserService userService; //新增&修改 @PostMapping public Integer save(@RequestBody User user){ //新增或更新均可 return userService.save(user); } //查询所有数据 @GetMapping("/") public List<User> index(){ List<User> all=userMapper.findAll(); return all; } //删除数据 @DeleteMapping("/{id}") public Integer delete(@PathVariable Integer id){ return userMapper.deleteById(id); } }
User
package com.ww.car.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor public class User { private Integer id; private String username; private String password; private String nickname; private String email; private String phone; private String address; }
application.yml
#下面这些内容是为了让MyBatis映射 #指定Mybatis的Mapper文件 mybatis: mapper-locations: classpath:mapper/*.xml #指定Mybatis的实体目录 type-aliases-package: com.ww.car.mybatis.entity configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 应用服务 WEB 访问端口 server: port: 9090 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/car?servertimezone=GMT%2b8 username: root password: 123456
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。