目录
1、Mapper
package com.example.demo.mapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.*;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("select * from user")
List<User> findAll();
@Insert("insert into user (username, password, nickname, email, phone, address) values (#{username}, #{password}, #{nickname}, #{email}, #{phone}, #{address})")
int insert( User user);
int update(User user);
@Delete("delete from user where id = #{id}")
int deleteById(@Param("id") Integer id);
}
2、Service
package com.example.demo.service;
import com.example.demo.entity.User;
import com.example.demo.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){
return userMapper.insert(user);
}else {
return userMapper.update(user);
}
}
}
3、Controller
package com.example.demo.controller;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.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;
@GetMapping("/")
public List<User> index(){
return userMapper.findAll();
}
@PostMapping
public Integer save(@RequestBody User user) {
return userService.save(user);
}
@DeleteMapping("/{id}")
public Integer delete(@PathVariable Integer id){
return userMapper.deleteById(id);
}
}
4、动态sql
想要单独修改某一行数据,而不影响其他数据,可以使用动态SQL
安装mybatis插件mybatisX,方便xml和mapper跳转,能看到小鸟图标
在resource文件夹中添加mapper文件夹,注意在配置文件中写sql和在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 namespace="com.example.springboot.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>
5、Mapper扫描路径配置
server:
port: 9090
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: admin123
url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
mybatis:
mapper-locations: classpath:mapper/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl