import java.math.BigDecimal; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.enums.SqlLike; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.ebc.numen.Application; import com.ebc.numen.entity.SysUser; import com.ebc.numen.service.SysUserService; /** * 单表操作例子 */ @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) @Slf4j public class TestSingle { @Resource private SysUserService sysUserService; /** * 添加 * <pre> * 1.不需要手工设置id * 2.不需要手工设置version、create_datetime、update_datetime(因为已自动填充) * 3.delete不填,数据库允许空 * </pre> */ @Test public void insert() { for (int i = 0; i < 30; i++) { SysUser user = new SysUser(); user.setOrgId(1L); user.setAge(10); user.setName("遥远"+i); user.setScope(BigDecimal.valueOf(1.23)); boolean isSucc = sysUserService.insert(user); log.info("{},主键id:{}",isSucc,user.getId()); } } /** * 修改~不获取对象 * <pre> * 1.没设置version,导致数据库version值不变,乐观锁没生效。 * 如果知道当前version值,也可以手工设置. * 2.update_datetime自动填充 * </pre> */ @Test public void update1() { SysUser user = new SysUser(); user.setId(1024613506376708097L); user.setName("www"); //user.setVersion(7); boolean isSucc = sysUserService.updateById(user); log.info("{}",isSucc); } /** * 修改~获取对象 * <pre> * 乐观锁生效。而且不需要自行+1,数据库当前值即可。 * </pre> */ @Test public void update2() { SysUser user = sysUserService.selectById(1024613506376708097L); user.setName("eee"); boolean isSucc = sysUserService.updateById(user); if (isSucc) { log.info("修改成功"); } else { log.info("修改失败,由于乐观锁,可能已被别人修改过了。如果想在修改,请重新获取该条记录后修改。"); } } /** * <pre> * 如果将某个字段置空,用updateAllColumnById方法 * 如果部分字段修改,用updateById方法 * </pre> */ @Test public void update3() { SysUser user = sysUserService.selectById(1024613506376708097L); user.setName(null); boolean isSucc = sysUserService.updateAllColumnById(user); if (isSucc) { log.info("修改成功"); } else { log.info("修改失败,由于乐观锁,可能已被别人修改过了。如果想在修改,请重新获取该条记录后修改。"); } } /** * 物理删除 * <pre> * DELETE FROM t_sys_user WHERE id=? * </pre> */ @Test public void delete() { boolean isSucc = sysUserService.deleteById(1024613254420688898L); log.info("{}",isSucc); } /** * 逻辑删除 * <pre> * 需在SysUser类中的deleted上边的注解放开 * 即:<code>@TableLogic</code> * * 执行后结果: * UPDATE t_sys_user SET deleted=1 WHERE id=? * </pre> */ @Test public void deleteLogic() { boolean isSucc = sysUserService.deleteById(1024839982808219649L); log.info("{}",isSucc); } /** * 指定条件删除 * <pre> * 执行sql: * DELETE FROM t_sys_user WHERE (age = ? AND create_datetime >= ? AND name LIKE ?) * 10(Integer), 2018-08-02 09:37:06.0(Timestamp), 遥远%(String) * </pre> */ @Test public void deleteByWrapper() { String dateStr = "2018-08-02 09:37:06"; Date date = DateUtil.parse(dateStr); EntityWrapper<SysUser> ew = new EntityWrapper<SysUser>(); ew.eq("age", 10); ew.ge("create_datetime", date);//字符串日期也可。 ew.like("name", "遥远", SqlLike.RIGHT); boolean isSucc = sysUserService.delete(ew);//ew为null,则全部删除 log.info("{}",isSucc); } /** * 分页查询 * <pre> * Preparing: SELECT id AS id,org_id AS orgId,`name`,age,`scope`,create_datetime AS createDatetime,update_datetime AS updateDatetime,deleted,version FROM t_sys_user WHERE (age = ? AND create_datetime >= ? AND update_datetime NOT BETWEEN ? AND ? AND name LIKE ?) LIMIT 0,10 * Parameters: 10(Integer), 2018-08-02 09:37:06(String), 2018-08-01 19:11:10(String), 2018-08-02 09:37:06(String), 遥远%(String) * </pre> */ @Test public void selectPage() { Page<SysUser> page = new Page<SysUser>(1,10); EntityWrapper<SysUser> ew = new EntityWrapper<SysUser>(); ew.eq("age", 10); ew.ge("create_datetime", "2018-08-02 09:37:06");//Date类型 也可以。 ew.notBetween("update_datetime", "2018-08-01 19:11:10","2018-08-02 09:37:06"); ew.like("name", "遥远", SqlLike.RIGHT); Page<SysUser> p = sysUserService.selectPage(page,ew); log.info("{}",p); log.info("{}",p.getRecords()); } /** * <pre> * 查询多个id的对象集合 * 执行sql: * Preparing: SELECT id AS id,org_id AS orgId,`name`,age,`scope`,create_datetime AS createDatetime,update_datetime AS updateDatetime,deleted,version FROM t_sys_user WHERE id IN ( ? , ? ) * Parameters: 1024839982728527874(Long), 1024831423877894145(Long) * </pre> */ @Test public void selectBatchIds() { List<Long> ids = Arrays.asList(1024839982728527874L, 1024831423877894145L); List<SysUser> list = sysUserService.selectBatchIds(ids); list.stream().forEach(s -> System.out.println(s)); } /** * 获取符合条件的第1条 * <pre> * Preparing: SELECT id AS id,org_id AS orgId,`name`,age,`scope`,create_datetime AS createDatetime,update_datetime AS updateDatetime,deleted,version FROM t_sys_user WHERE (name LIKE ?) * Parameters: 遥远%(String) * </pre> */ @Test public void selectOne() { EntityWrapper<SysUser> ew = new EntityWrapper<SysUser>(); ew.like("name", "遥远", SqlLike.RIGHT); SysUser user = sysUserService.selectOne(ew); log.info("{}",user); } /** * 获取符合条件的所有记录 * <pre> * Preparing: SELECT id AS id,org_id AS orgId,`name`,age,`scope`,create_datetime AS createDatetime,update_datetime AS updateDatetime,deleted,version FROM t_sys_user WHERE (name LIKE ?) * Parameters: 遥远%(String) * </pre> */ @Test public void selectList() { EntityWrapper<SysUser> ew = new EntityWrapper<SysUser>(); ew.like("name", "遥远", SqlLike.RIGHT); List<SysUser> list = sysUserService.selectList(ew); list.stream().forEach(s -> System.out.println(s)); } /** * 操作符:in * <pre> * Preparing: SELECT id AS id,org_id AS orgId,`name`,age,`scope`,create_datetime AS createDatetime,update_datetime AS updateDatetime,deleted,version FROM t_sys_user WHERE (name IN (?,?,?) AND org_id NOT IN (?,?)) * Parameters: 遥远0(String), 遥远2(String), 遥远3(String), 2(String), 3(String) * </pre> */ @Test public void operate_in() { EntityWrapper<SysUser> ew = new EntityWrapper<SysUser>(); ew.in("name", "遥远0,遥远2,遥远3");//字符串 ew.notIn("org_id", "2,3");//整数 List<SysUser> list = sysUserService.selectList(ew); list.stream().forEach(s -> System.out.println(s)); } /** * 操作符:between * <pre> * Preparing: SELECT id AS id,org_id AS orgId,`name`,age,`scope`,create_datetime AS createDatetime,update_datetime AS updateDatetime,deleted,version FROM t_sys_user WHERE (create_datetime BETWEEN ? AND ?) * Parameters: 2018-08-01 19:11:10(String), 2018-08-02 09:37:06(String) * </pre> */ @Test public void operate_between() { EntityWrapper<SysUser> ew = new EntityWrapper<SysUser>(); ew.between("create_datetime", "2018-08-01 19:11:10","2018-08-02 09:37:06");//字符串或者Date均可 List<SysUser> list = sysUserService.selectList(ew); list.stream().forEach(s -> System.out.println(s)); } /** * 将查询结果封装到Map<String, Object> * <pre> * Preparing: SELECT id AS id,org_id AS orgId,`name`,age,`scope`,create_datetime AS createDatetime,update_datetime AS updateDatetime,deleted,version FROM t_sys_user WHERE (create_datetime BETWEEN ? AND ?) * Parameters: 2018-08-01 19:11:10(String), 2018-08-02 09:37:06(String) * * </pre> */ @Test public void selectMaps() { EntityWrapper<SysUser> ew = new EntityWrapper<SysUser>(); ew.between("create_datetime", "2018-08-01 19:11:10","2018-08-02 09:37:06");//字符串或者Date均可 List<Map<String, Object>> list = sysUserService.selectMaps(ew); //打印如下: //{createDatetime=2018-08-01 19:11:10.0, updateDatetime=2018-08-01 19:11:10.0, scope=1.23, name=22, id=1024613506376708097, version=0, orgId=1, age=10} //{createDatetime=2018-08-02 09:37:06.0, updateDatetime=2018-08-02 09:37:06.0, scope=1.23, name=11, id=1024831423877894145, version=0, orgId=1, age=10} list.stream().forEach(s -> System.out.println(s)); } /** * 只返回第一个字段值 * <pre> * Preparing: SELECT id AS id FROM t_sys_user WHERE (create_datetime BETWEEN ? AND ?) * Parameters: 2018-08-01 19:11:10(String), 2018-08-02 09:37:06(String) * </pre> */ @Test public void selectObjs() { EntityWrapper<SysUser> ew = new EntityWrapper<SysUser>(); ew.between("create_datetime", "2018-08-01 19:11:10","2018-08-02 09:37:06");//字符串或者Date均可 List<Object> list = sysUserService.selectObjs(ew); //打印如下: //1024613506376708097 //1024831423877894145 list.stream().forEach(s -> System.out.println(s)); } }