0 课程地址:
https://www.imooc.com/video/16788
1 重要知识点:
1.1 mybatis常用注解:
@MapperScan
mybatis扫描Mapper路径,用于springboot 启动类
@ComponentScan
扫描 所需要的包,包含自用的工具类包所在路径,主要是第三方包(不在启动类下路径的包)
1.2 mapper的两种update方法:
userMapper.updateByPrimaryKeySelective(user);(有值则更新,无值不更新)
userMapper.updateByPrimaryKey(user);(有值无值都会更新)
1.3 关于分页:
一共15条,每页10条,第二页是5条,第100页也是5条
2 代码演练:
2.1 insert demo
启动类:
package com.example.demo; import tk.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication //扫描mybaties mapper包路径 @MapperScan(basePackages = "com.example.demo.mapper") //扫描 所需要的包,包含自用的工具类包所在路径 @ComponentScan(basePackages={"com.example.demo","org.n3r.idworker"}) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
Controller类:
package com.example.demo.controller; /** * MyBatisCRUDController * * @author 魏豆豆 * @date 2020/12/20 */ import com.example.demo.pojo.SysUser; import com.example.demo.service.UserService; import com.example.demo.tools.JSONResult; import org.n3r.idworker.Sid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Date; import java.util.List; @RestController @RequestMapping("mybatis") public class MyBatisCRUDController { @Autowired private UserService userService; @Autowired private Sid sid; @RequestMapping("/saveUser") public JSONResult saveUser() throws Exception { String userId = sid.nextShort(); SysUser user = new SysUser(); user.setId(userId); user.setUsername("imooc" + new Date()); user.setNickname("imooc" + new Date()); user.setPassword("abc123"); user.setIsDelete(0); user.setRegistTime(new Date()); userService.saveUser(user); return JSONResult.ok("保存成功"); } @RequestMapping("/updateUser") public JSONResult updateUser() { SysUser user = new SysUser(); user.setId("10011001"); user.setUsername("10011001-updated" + new Date()); user.setNickname("10011001-updated" + new Date()); user.setPassword("10011001-updated"); user.setIsDelete(0); user.setRegistTime(new Date()); userService.updateUser(user); return JSONResult.ok("保存成功"); } @RequestMapping("/deleteUser") public JSONResult deleteUser(String userId) { userService.deleteUser(userId); return JSONResult.ok("删除成功"); } @RequestMapping("/queryUserById") public JSONResult queryUserById(String userId) { return JSONResult.ok(userService.queryUserById(userId)); } @RequestMapping("/queryUserList") public JSONResult queryUserList() { SysUser user = new SysUser(); user.setUsername("imooc"); user.setNickname("lee"); List<SysUser> userList = userService.queryUserList(user); return JSONResult.ok(userList); } @RequestMapping("/queryUserListPaged") public JSONResult queryUserListPaged(Integer page) { if (page == null) { page = 1; } int pageSize = 10; SysUser user = new SysUser(); // user.setNickname("lee"); List<SysUser> userList = userService.queryUserListPaged(user, page, pageSize); return JSONResult.ok(userList); } /* @RequestMapping("/queryUserByIdCustom") public JSONResult queryUserByIdCustom(String userId) { return JSONResult.ok(userService.queryUserByIdCustom(userId)); }*/ @RequestMapping("/saveUserTransactional") public JSONResult saveUserTransactional() { String userId = sid.nextShort(); SysUser user = new SysUser(); user.setId(userId); user.setUsername("lee" + new Date()); user.setNickname("lee" + new Date()); user.setPassword("abc123"); user.setIsDelete(0); user.setRegistTime(new Date()); userService.saveUserTransactional(user); return JSONResult.ok("保存成功"); } }
Service接口:
package com.example.demo.service; /** * UserService * * @author 魏豆豆 * @date 2020/12/20 */ import com.example.demo.pojo.SysUser; import java.util.List; public interface UserService { public void saveUser(SysUser user) throws Exception; public void updateUser(SysUser user); public void deleteUser(String userId); public SysUser queryUserById(String userId); public List<SysUser> queryUserList(SysUser user); public List<SysUser> queryUserListPaged(SysUser user, Integer page, Integer pageSize); /*public SysUser queryUserByIdCustom(String userId);*/ public void saveUserTransactional(SysUser user); }
Service实现类:
package com.example.demo.service.impl; /** * UserServiceImpl * * @author 魏豆豆 * @date 2020/12/20 */ import java.util.List; import com.example.demo.mapper.SysUserMapper; import com.example.demo.pojo.SysUser; import com.example.demo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.thymeleaf.util.StringUtils; import com.github.pagehelper.PageHelper; import tk.mybatis.mapper.entity.Example; @Service public class UserServiceImpl implements UserService { @Autowired private SysUserMapper userMapper; /*@Autowired private SysUserMapperCustom userMapperCustom;*/ @Override @Transactional(propagation = Propagation.REQUIRED) public void saveUser(SysUser user) throws Exception { try { Thread.sleep(4000); } catch (InterruptedException e) { e.printStackTrace(); } //mybaties jar包中的方法 userMapper.insert(user); } @Override @Transactional(propagation = Propagation.REQUIRED) public void updateUser(SysUser user) { userMapper.updateByPrimaryKeySelective(user); // userMapper.updateByPrimaryKey(user); } @Override @Transactional(propagation = Propagation.REQUIRED) public void deleteUser(String userId) { userMapper.deleteByPrimaryKey(userId); } @Override @Transactional(propagation = Propagation.SUPPORTS) public SysUser queryUserById(String userId) { try { Thread.sleep(6000); } catch (InterruptedException e) { e.printStackTrace(); } return userMapper.selectByPrimaryKey(userId); } @Override @Transactional(propagation = Propagation.SUPPORTS) public List<SysUser> queryUserList(SysUser user) { try { Thread.sleep(11000); } catch (InterruptedException e) { e.printStackTrace(); } Example example = new Example(SysUser.class); Example.Criteria criteria = example.createCriteria(); if (!StringUtils.isEmptyOrWhitespace(user.getUsername())) { // criteria.andEqualTo("username", user.getUsername()); criteria.andLike("username", "%" + user.getUsername() + "%"); } if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) { criteria.andLike("nickname", "%" + user.getNickname() + "%"); } List<SysUser> userList = userMapper.selectByExample(example); return userList; } @Override @Transactional(propagation = Propagation.SUPPORTS) public List<SysUser> queryUserListPaged(SysUser user, Integer page, Integer pageSize) { // 开始分页 PageHelper.startPage(page, pageSize); Example example = new Example(SysUser.class); Example.Criteria criteria = example.createCriteria(); if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) { criteria.andLike("nickname", "%" + user.getNickname() + "%"); } example.orderBy("registTime").desc(); List<SysUser> userList = userMapper.selectByExample(example); return userList; } /*@Override @Transactional(propagation = Propagation.SUPPORTS) public SysUser queryUserByIdCustom(String userId) { List<SysUser> userList = userMapperCustom.queryUserSimplyInfoById(userId); if (userList != null && !userList.isEmpty()) { return (SysUser)userList.get(0); } return null; }*/ @Override @Transactional(propagation = Propagation.REQUIRED) public void saveUserTransactional(SysUser user) { userMapper.insert(user); int a = 1 / 0; user.setIsDelete(1); userMapper.updateByPrimaryKeySelective(user); } }
生成的mapper类:
package com.example.demo.mapper; import com.example.demo.pojo.SysUser; import com.example.demo.tools.MyMapper; public interface SysUserMapper extends MyMapper<SysUser> { }
生成的pojo类:
package com.example.demo.pojo; import java.util.Date; import javax.persistence.*; @Table(name = "sys_user") public class SysUser { @Id private String id; /** * 用户名,登录名 */ private String username; /** * 密码 */ private String password; /** * 昵称 */ private String nickname; /** * 年龄 */ private Integer age; /** * 性别 0:女 1:男 2:保密 */ private Integer sex; /** * 职业类型: 1:Java开发 2:前端开发 3:大数据开发 4:ios开发 5:Android开发 6:Linux系统工程师 7:PHP开发 8:.net开发 9:C/C++ 10:学生 11:其它 */ private Integer job; /** * 头像地址 */ @Column(name = "face_image") private String faceImage; /** * 省 */ private String province; /** * 市 */ private String city; /** * 区 */ private String district; /** * 详细地址 */ private String address; /** * 用于权限的“盐” */ @Column(name = "auth_salt") private String authSalt; /** * 最后一次登录IP */ @Column(name = "last_login_ip") private String lastLoginIp; /** * 最后一次登录时间 */ @Column(name = "last_login_time") private Date lastLoginTime; @Column(name = "is_delete") private Integer isDelete; @Column(name = "regist_time") private Date registTime; /** * @return id */ public String getId() { return id; } /** * @param id */ public void setId(String id) { this.id = id; } /** * 获取用户名,登录名 * * @return username - 用户名,登录名 */ public String getUsername() { return username; } /** * 设置用户名,登录名 * * @param username 用户名,登录名 */ public void setUsername(String username) { this.username = username; } /** * 获取密码 * * @return password - 密码 */ public String getPassword() { return password; } /** * 设置密码 * * @param password 密码 */ public void setPassword(String password) { this.password = password; } /** * 获取昵称 * * @return nickname - 昵称 */ public String getNickname() { return nickname; } /** * 设置昵称 * * @param nickname 昵称 */ public void setNickname(String nickname) { this.nickname = nickname; } /** * 获取年龄 * * @return age - 年龄 */ public Integer getAge() { return age; } /** * 设置年龄 * * @param age 年龄 */ public void setAge(Integer age) { this.age = age; } /** * 获取性别 0:女 1:男 2:保密 * * @return sex - 性别 0:女 1:男 2:保密 */ public Integer getSex() { return sex; } /** * 设置性别 0:女 1:男 2:保密 * * @param sex 性别 0:女 1:男 2:保密 */ public void setSex(Integer sex) { this.sex = sex; } /** * 获取职业类型: 1:Java开发 2:前端开发 3:大数据开发 4:ios开发 5:Android开发 6:Linux系统工程师 7:PHP开发 8:.net开发 9:C/C++ 10:学生 11:其它 * * @return job - 职业类型: 1:Java开发 2:前端开发 3:大数据开发 4:ios开发 5:Android开发 6:Linux系统工程师 7:PHP开发 8:.net开发 9:C/C++ 10:学生 11:其它 */ public Integer getJob() { return job; } /** * 设置职业类型: 1:Java开发 2:前端开发 3:大数据开发 4:ios开发 5:Android开发 6:Linux系统工程师 7:PHP开发 8:.net开发 9:C/C++ 10:学生 11:其它 * * @param job 职业类型: 1:Java开发 2:前端开发 3:大数据开发 4:ios开发 5:Android开发 6:Linux系统工程师 7:PHP开发 8:.net开发 9:C/C++ 10:学生 11:其它 */ public void setJob(Integer job) { this.job = job; } /** * 获取头像地址 * * @return face_image - 头像地址 */ public String getFaceImage() { return faceImage; } /** * 设置头像地址 * * @param faceImage 头像地址 */ public void setFaceImage(String faceImage) { this.faceImage = faceImage; } /** * 获取省 * * @return province - 省 */ public String getProvince() { return province; } /** * 设置省 * * @param province 省 */ public void setProvince(String province) { this.province = province; } /** * 获取市 * * @return city - 市 */ public String getCity() { return city; } /** * 设置市 * * @param city 市 */ public void setCity(String city) { this.city = city; } /** * 获取区 * * @return district - 区 */ public String getDistrict() { return district; } /** * 设置区 * * @param district 区 */ public void setDistrict(String district) { this.district = district; } /** * 获取详细地址 * * @return address - 详细地址 */ public String getAddress() { return address; } /** * 设置详细地址 * * @param address 详细地址 */ public void setAddress(String address) { this.address = address; } /** * 获取用于权限的“盐” * * @return auth_salt - 用于权限的“盐” */ public String getAuthSalt() { return authSalt; } /** * 设置用于权限的“盐” * * @param authSalt 用于权限的“盐” */ public void setAuthSalt(String authSalt) { this.authSalt = authSalt; } /** * 获取最后一次登录IP * * @return last_login_ip - 最后一次登录IP */ public String getLastLoginIp() { return lastLoginIp; } /** * 设置最后一次登录IP * * @param lastLoginIp 最后一次登录IP */ public void setLastLoginIp(String lastLoginIp) { this.lastLoginIp = lastLoginIp; } /** * 获取最后一次登录时间 * * @return last_login_time - 最后一次登录时间 */ public Date getLastLoginTime() { return lastLoginTime; } /** * 设置最后一次登录时间 * * @param lastLoginTime 最后一次登录时间 */ public void setLastLoginTime(Date lastLoginTime) { this.lastLoginTime = lastLoginTime; } /** * @return is_delete */ public Integer getIsDelete() { return isDelete; } /** * @param isDelete */ public void setIsDelete(Integer isDelete) { this.isDelete = isDelete; } /** * @return regist_time */ public Date getRegistTime() { return registTime; } /** * @param registTime */ public void setRegistTime(Date registTime) { this.registTime = registTime; } }
生成的相关mapper.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.example.demo.mapper.SysUserMapper" > <resultMap id="BaseResultMap" type="com.example.demo.pojo.SysUser" > <!-- WARNING - @mbg.generated --> <id column="id" property="id" jdbcType="VARCHAR" /> <result column="username" property="username" jdbcType="VARCHAR" /> <result column="password" property="password" jdbcType="VARCHAR" /> <result column="nickname" property="nickname" jdbcType="VARCHAR" /> <result column="age" property="age" jdbcType="INTEGER" /> <result column="sex" property="sex" jdbcType="INTEGER" /> <result column="job" property="job" jdbcType="INTEGER" /> <result column="face_image" property="faceImage" jdbcType="VARCHAR" /> <result column="province" property="province" jdbcType="VARCHAR" /> <result column="city" property="city" jdbcType="VARCHAR" /> <result column="district" property="district" jdbcType="VARCHAR" /> <result column="address" property="address" jdbcType="VARCHAR" /> <result column="auth_salt" property="authSalt" jdbcType="VARCHAR" /> <result column="last_login_ip" property="lastLoginIp" jdbcType="VARCHAR" /> <result column="last_login_time" property="lastLoginTime" jdbcType="TIMESTAMP" /> <result column="is_delete" property="isDelete" jdbcType="INTEGER" /> <result column="regist_time" property="registTime" jdbcType="TIMESTAMP" /> </resultMap> </mapper>
测试:
2.2 update demo(注意:两种update方式,看本节1.2)
启动类:(同上)
Controller类:
package com.example.demo.controller;
/**
* MyBatisCRUDController
*
* @author 魏豆豆
* @date 2020/12/20
*/
import com.example.demo.pojo.SysUser;
import com.example.demo.service.UserService;
import com.example.demo.tools.JSONResult;
import org.n3r.idworker.Sid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("mybatis")
public class MyBatisCRUDController {
@Autowired
private UserService userService;
@Autowired
private Sid sid;
@RequestMapping("/saveUser")
public JSONResult saveUser() throws Exception {
String userId = sid.nextShort();
SysUser user = new SysUser();
user.setId(userId);
user.setUsername("imooc" + new Date());
user.setNickname("imooc" + new Date());
user.setPassword("abc123");
user.setIsDelete(0);
user.setRegistTime(new Date());
userService.saveUser(user);
return JSONResult.ok("保存成功");
}
@RequestMapping("/updateUser")
public JSONResult updateUser() {
SysUser user = new SysUser();
user.setId("10011001");
user.setUsername("10011001-updated" + new Date());
user.setNickname("10011001-updated" + new Date());
user.setPassword("10011001-updated");
user.setIsDelete(0);
user.setRegistTime(new Date());
userService.updateUser(user);
return JSONResult.ok("保存成功");
}
@RequestMapping("/deleteUser")
public JSONResult deleteUser(String userId) {
userService.deleteUser(userId);
return JSONResult.ok("删除成功");
}
@RequestMapping("/queryUserById")
public JSONResult queryUserById(String userId) {
return JSONResult.ok(userService.queryUserById(userId));
}
@RequestMapping("/queryUserList")
public JSONResult queryUserList() {
SysUser user = new SysUser();
user.setUsername("imooc");
user.setNickname("lee");
List<SysUser> userList = userService.queryUserList(user);
return JSONResult.ok(userList);
}
@RequestMapping("/queryUserListPaged")
public JSONResult queryUserListPaged(Integer page) {
if (page == null) {
page = 1;
}
int pageSize = 10;
SysUser user = new SysUser();
// user.setNickname("lee");
List<SysUser> userList = userService.queryUserListPaged(user, page, pageSize);
return JSONResult.ok(userList);
}
/* @RequestMapping("/queryUserByIdCustom")
public JSONResult queryUserByIdCustom(String userId) {
return JSONResult.ok(userService.queryUserByIdCustom(userId));
}*/
@RequestMapping("/saveUserTransactional")
public JSONResult saveUserTransactional() {
String userId = sid.nextShort();
SysUser user = new SysUser();
user.setId(userId);
user.setUsername("lee" + new Date());
user.setNickname("lee" + new Date());
user.setPassword("abc123");
user.setIsDelete(0);
user.setRegistTime(new Date());
userService.saveUserTransactional(user);
return JSONResult.ok("保存成功");
}
}
Service接口:(同上)
Service实现类:
package com.example.demo.service.impl;
/**
* UserServiceImpl
*
* @author 魏豆豆
* @date 2020/12/20
*/
import java.util.List;
import com.example.demo.mapper.SysUserMapper;
import com.example.demo.pojo.SysUser;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.thymeleaf.util.StringUtils;
import com.github.pagehelper.PageHelper;
import tk.mybatis.mapper.entity.Example;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private SysUserMapper userMapper;
/*@Autowired
private SysUserMapperCustom userMapperCustom;*/
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void saveUser(SysUser user) throws Exception {
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//mybaties jar包中的方法
userMapper.insert(user);
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void updateUser(SysUser user) {
userMapper.updateByPrimaryKeySelective(user);
// userMapper.updateByPrimaryKey(user);
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void deleteUser(String userId) {
userMapper.deleteByPrimaryKey(userId);
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public SysUser queryUserById(String userId) {
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return userMapper.selectByPrimaryKey(userId);
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public List<SysUser> queryUserList(SysUser user) {
try {
Thread.sleep(11000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Example example = new Example(SysUser.class);
Example.Criteria criteria = example.createCriteria();
if (!StringUtils.isEmptyOrWhitespace(user.getUsername())) {
// criteria.andEqualTo("username", user.getUsername());
criteria.andLike("username", "%" + user.getUsername() + "%");
}
if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) {
criteria.andLike("nickname", "%" + user.getNickname() + "%");
}
List<SysUser> userList = userMapper.selectByExample(example);
return userList;
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public List<SysUser> queryUserListPaged(SysUser user, Integer page, Integer pageSize) {
// 开始分页
PageHelper.startPage(page, pageSize);
Example example = new Example(SysUser.class);
Example.Criteria criteria = example.createCriteria();
if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) {
criteria.andLike("nickname", "%" + user.getNickname() + "%");
}
example.orderBy("registTime").desc();
List<SysUser> userList = userMapper.selectByExample(example);
return userList;
}
/*@Override
@Transactional(propagation = Propagation.SUPPORTS)
public SysUser queryUserByIdCustom(String userId) {
List<SysUser> userList = userMapperCustom.queryUserSimplyInfoById(userId);
if (userList != null && !userList.isEmpty()) {
return (SysUser)userList.get(0);
}
return null;
}*/
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void saveUserTransactional(SysUser user) {
userMapper.insert(user);
int a = 1 / 0;
user.setIsDelete(1);
userMapper.updateByPrimaryKeySelective(user);
}
}
生成的mapper类:(同上)
生成的pojo类:(同上)
生成的相关mapper.xml(同上)
测试:
2.3 delete demo(注意:json页面传参)
启动类:(同上)
Controller类:
package com.example.demo.controller;
/**
* MyBatisCRUDController
*
* @author 魏豆豆
* @date 2020/12/20
*/
import com.example.demo.pojo.SysUser;
import com.example.demo.service.UserService;
import com.example.demo.tools.JSONResult;
import org.n3r.idworker.Sid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("mybatis")
public class MyBatisCRUDController {
@Autowired
private UserService userService;
@Autowired
private Sid sid;
@RequestMapping("/saveUser")
public JSONResult saveUser() throws Exception {
String userId = sid.nextShort();
SysUser user = new SysUser();
user.setId(userId);
user.setUsername("imooc" + new Date());
user.setNickname("imooc" + new Date());
user.setPassword("abc123");
user.setIsDelete(0);
user.setRegistTime(new Date());
userService.saveUser(user);
return JSONResult.ok("保存成功");
}
@RequestMapping("/updateUser")
public JSONResult updateUser() {
SysUser user = new SysUser();
user.setId("10011001");
user.setUsername("10011001-updated" + new Date());
user.setNickname("10011001-updated" + new Date());
user.setPassword("10011001-updated");
user.setIsDelete(0);
user.setRegistTime(new Date());
userService.updateUser(user);
return JSONResult.ok("保存成功");
}
@RequestMapping("/deleteUser")
public JSONResult deleteUser(String userId) {
userService.deleteUser(userId);
return JSONResult.ok("删除成功");
}
@RequestMapping("/queryUserById")
public JSONResult queryUserById(String userId) {
return JSONResult.ok(userService.queryUserById(userId));
}
@RequestMapping("/queryUserList")
public JSONResult queryUserList() {
SysUser user = new SysUser();
user.setUsername("imooc");
user.setNickname("lee");
List<SysUser> userList = userService.queryUserList(user);
return JSONResult.ok(userList);
}
@RequestMapping("/queryUserListPaged")
public JSONResult queryUserListPaged(Integer page) {
if (page == null) {
page = 1;
}
int pageSize = 10;
SysUser user = new SysUser();
// user.setNickname("lee");
List<SysUser> userList = userService.queryUserListPaged(user, page, pageSize);
return JSONResult.ok(userList);
}
/* @RequestMapping("/queryUserByIdCustom")
public JSONResult queryUserByIdCustom(String userId) {
return JSONResult.ok(userService.queryUserByIdCustom(userId));
}*/
@RequestMapping("/saveUserTransactional")
public JSONResult saveUserTransactional() {
String userId = sid.nextShort();
SysUser user = new SysUser();
user.setId(userId);
user.setUsername("lee" + new Date());
user.setNickname("lee" + new Date());
user.setPassword("abc123");
user.setIsDelete(0);
user.setRegistTime(new Date());
userService.saveUserTransactional(user);
return JSONResult.ok("保存成功");
}
}
Service接口:(同上)
Service实现类:
package com.example.demo.service.impl;
/**
* UserServiceImpl
*
* @author 魏豆豆
* @date 2020/12/20
*/
import java.util.List;
import com.example.demo.mapper.SysUserMapper;
import com.example.demo.pojo.SysUser;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.thymeleaf.util.StringUtils;
import com.github.pagehelper.PageHelper;
import tk.mybatis.mapper.entity.Example;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private SysUserMapper userMapper;
/*@Autowired
private SysUserMapperCustom userMapperCustom;*/
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void saveUser(SysUser user) throws Exception {
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//mybaties jar包中的方法
userMapper.insert(user);
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void updateUser(SysUser user) {
userMapper.updateByPrimaryKeySelective(user);
// userMapper.updateByPrimaryKey(user);
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void deleteUser(String userId) {
userMapper.deleteByPrimaryKey(userId);
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public SysUser queryUserById(String userId) {
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return userMapper.selectByPrimaryKey(userId);
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public List<SysUser> queryUserList(SysUser user) {
try {
Thread.sleep(11000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Example example = new Example(SysUser.class);
Example.Criteria criteria = example.createCriteria();
if (!StringUtils.isEmptyOrWhitespace(user.getUsername())) {
// criteria.andEqualTo("username", user.getUsername());
criteria.andLike("username", "%" + user.getUsername() + "%");
}
if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) {
criteria.andLike("nickname", "%" + user.getNickname() + "%");
}
List<SysUser> userList = userMapper.selectByExample(example);
return userList;
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public List<SysUser> queryUserListPaged(SysUser user, Integer page, Integer pageSize) {
// 开始分页
PageHelper.startPage(page, pageSize);
Example example = new Example(SysUser.class);
Example.Criteria criteria = example.createCriteria();
if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) {
criteria.andLike("nickname", "%" + user.getNickname() + "%");
}
example.orderBy("registTime").desc();
List<SysUser> userList = userMapper.selectByExample(example);
return userList;
}
/*@Override
@Transactional(propagation = Propagation.SUPPORTS)
public SysUser queryUserByIdCustom(String userId) {
List<SysUser> userList = userMapperCustom.queryUserSimplyInfoById(userId);
if (userList != null && !userList.isEmpty()) {
return (SysUser)userList.get(0);
}
return null;
}*/
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void saveUserTransactional(SysUser user) {
userMapper.insert(user);
int a = 1 / 0;
user.setIsDelete(1);
userMapper.updateByPrimaryKeySelective(user);
}
}
生成的mapper类:(同上)
生成的pojo类:(同上)
生成的相关mapper.xml(同上)
测试:
2.4 select demo(根据主键查询):
启动类:(同上)
Controller类:
package com.example.demo.controller;
/**
* MyBatisCRUDController
*
* @author 魏豆豆
* @date 2020/12/20
*/
import com.example.demo.pojo.SysUser;
import com.example.demo.service.UserService;
import com.example.demo.tools.JSONResult;
import org.n3r.idworker.Sid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("mybatis")
public class MyBatisCRUDController {
@Autowired
private UserService userService;
@Autowired
private Sid sid;
@RequestMapping("/saveUser")
public JSONResult saveUser() throws Exception {
String userId = sid.nextShort();
SysUser user = new SysUser();
user.setId(userId);
user.setUsername("imooc" + new Date());
user.setNickname("imooc" + new Date());
user.setPassword("abc123");
user.setIsDelete(0);
user.setRegistTime(new Date());
userService.saveUser(user);
return JSONResult.ok("保存成功");
}
@RequestMapping("/updateUser")
public JSONResult updateUser() {
SysUser user = new SysUser();
user.setId("10011001");
user.setUsername("10011001-updated" + new Date());
user.setNickname("10011001-updated" + new Date());
user.setPassword("10011001-updated");
user.setIsDelete(0);
user.setRegistTime(new Date());
userService.updateUser(user);
return JSONResult.ok("保存成功");
}
@RequestMapping("/deleteUser")
public JSONResult deleteUser(String userId) {
userService.deleteUser(userId);
return JSONResult.ok("删除成功");
}
@RequestMapping("/queryUserById")
public JSONResult queryUserById(String userId) {
return JSONResult.ok(userService.queryUserById(userId));
}
@RequestMapping("/queryUserList")
public JSONResult queryUserList() {
SysUser user = new SysUser();
user.setUsername("imooc");
user.setNickname("lee");
List<SysUser> userList = userService.queryUserList(user);
return JSONResult.ok(userList);
}
@RequestMapping("/queryUserListPaged")
public JSONResult queryUserListPaged(Integer page) {
if (page == null) {
page = 1;
}
int pageSize = 10;
SysUser user = new SysUser();
// user.setNickname("lee");
List<SysUser> userList = userService.queryUserListPaged(user, page, pageSize);
return JSONResult.ok(userList);
}
/* @RequestMapping("/queryUserByIdCustom")
public JSONResult queryUserByIdCustom(String userId) {
return JSONResult.ok(userService.queryUserByIdCustom(userId));
}*/
@RequestMapping("/saveUserTransactional")
public JSONResult saveUserTransactional() {
String userId = sid.nextShort();
SysUser user = new SysUser();
user.setId(userId);
user.setUsername("lee" + new Date());
user.setNickname("lee" + new Date());
user.setPassword("abc123");
user.setIsDelete(0);
user.setRegistTime(new Date());
userService.saveUserTransactional(user);
return JSONResult.ok("保存成功");
}
}
Service接口:(同上)
Service实现类:
package com.example.demo.service.impl;
/**
* UserServiceImpl
*
* @author 魏豆豆
* @date 2020/12/20
*/
import java.util.List;
import com.example.demo.mapper.SysUserMapper;
import com.example.demo.pojo.SysUser;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.thymeleaf.util.StringUtils;
import com.github.pagehelper.PageHelper;
import tk.mybatis.mapper.entity.Example;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private SysUserMapper userMapper;
/*@Autowired
private SysUserMapperCustom userMapperCustom;*/
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void saveUser(SysUser user) throws Exception {
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//mybaties jar包中的方法
userMapper.insert(user);
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void updateUser(SysUser user) {
userMapper.updateByPrimaryKeySelective(user);
// userMapper.updateByPrimaryKey(user);
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void deleteUser(String userId) {
userMapper.deleteByPrimaryKey(userId);
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public SysUser queryUserById(String userId) {
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return userMapper.selectByPrimaryKey(userId);
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public List<SysUser> queryUserList(SysUser user) {
try {
Thread.sleep(11000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Example example = new Example(SysUser.class);
Example.Criteria criteria = example.createCriteria();
if (!StringUtils.isEmptyOrWhitespace(user.getUsername())) {
// criteria.andEqualTo("username", user.getUsername());
criteria.andLike("username", "%" + user.getUsername() + "%");
}
if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) {
criteria.andLike("nickname", "%" + user.getNickname() + "%");
}
List<SysUser> userList = userMapper.selectByExample(example);
return userList;
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public List<SysUser> queryUserListPaged(SysUser user, Integer page, Integer pageSize) {
// 开始分页
PageHelper.startPage(page, pageSize);
Example example = new Example(SysUser.class);
Example.Criteria criteria = example.createCriteria();
if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) {
criteria.andLike("nickname", "%" + user.getNickname() + "%");
}
example.orderBy("registTime").desc();
List<SysUser> userList = userMapper.selectByExample(example);
return userList;
}
/*@Override
@Transactional(propagation = Propagation.SUPPORTS)
public SysUser queryUserByIdCustom(String userId) {
List<SysUser> userList = userMapperCustom.queryUserSimplyInfoById(userId);
if (userList != null && !userList.isEmpty()) {
return (SysUser)userList.get(0);
}
return null;
}*/
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void saveUserTransactional(SysUser user) {
userMapper.insert(user);
int a = 1 / 0;
user.setIsDelete(1);
userMapper.updateByPrimaryKeySelective(user);
}
}
生成的mapper类:(同上)
生成的pojo类:(同上)
生成的相关mapper.xml(同上)
测试:
2.5 select demo(分页查询):
启动类:(同上)
Controller类:
package com.example.demo.controller;
/**
* MyBatisCRUDController
*
* @author 魏豆豆
* @date 2020/12/20
*/
import com.example.demo.pojo.SysUser;
import com.example.demo.service.UserService;
import com.example.demo.tools.JSONResult;
import org.n3r.idworker.Sid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("mybatis")
public class MyBatisCRUDController {
@Autowired
private UserService userService;
@Autowired
private Sid sid;
@RequestMapping("/saveUser")
public JSONResult saveUser() throws Exception {
String userId = sid.nextShort();
SysUser user = new SysUser();
user.setId(userId);
user.setUsername("imooc" + new Date());
user.setNickname("imooc" + new Date());
user.setPassword("abc123");
user.setIsDelete(0);
user.setRegistTime(new Date());
userService.saveUser(user);
return JSONResult.ok("保存成功");
}
@RequestMapping("/updateUser")
public JSONResult updateUser() {
SysUser user = new SysUser();
user.setId("10011001");
user.setUsername("10011001-updated" + new Date());
user.setNickname("10011001-updated" + new Date());
user.setPassword("10011001-updated");
user.setIsDelete(0);
user.setRegistTime(new Date());
userService.updateUser(user);
return JSONResult.ok("保存成功");
}
@RequestMapping("/deleteUser")
public JSONResult deleteUser(String userId) {
userService.deleteUser(userId);
return JSONResult.ok("删除成功");
}