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
//
list.stream().forEach(s -> System.out.println(s));
}
}

mybaits-plus总结的更多相关文章

  1. MyBaits使用小结

      Mybatis用like进行模糊查询的时候,配置与所用的数据库有关系,总结了下,具体如下: 1.MySQL :LIKE CONCAT('%',#{empname},'%' ) 或者 LIKE CO ...

  2. MyBaits学习

    一:配置MyBaits的开发环境 1.1.核心配置文件 正如hibernate一样,MyBaits也有一个核心的配置文件,它包含着数据源地址,用户名,密码等,还有着各个实体类的配置文件,配置文件是xm ...

  3. MyBaits一对一的查询方法

    MyBaits一对一的查询方法 一:表数据与表结构 CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name ) ); CRE ...

  4. (原创)mybaits学习三,springMVC和mybatis融合

    上一节,总计了spring和mybaits的融合,这一节,我们来学习springmvc和mybatis融合 最近在弄一个SSM的项目,然后在网上找资料,将资料总结如下 一,开发环境的配置 MyEcli ...

  5. mybaits入门

    1.回顾jdbc开发 orm概述 orm是一种解决持久层对象关系映射的规则,而不是一种具体技术.jdbc/dbutils/springdao,hibernate/springorm,mybaits同属 ...

  6. Mybaits学习总结2

    http://www.cnblogs.com/xdp-gacl/p/4262895.html 继续参考这篇文章写Mybaits学习总结 上一章,我修改了编码,统一为UTF8之后,便没有编码错误 < ...

  7. Mybaits学习总结1

    http://www.cnblogs.com/xdp-gacl/p/4261895.html 参考了这篇文章搭建了Mybaits环境,原作者有些地方没有标注使用某种编码,我是自学SQL的,所以深知编码 ...

  8. mybaits 学习

    mybaits  学习(一) 注意:如果建的是web项目,run as java application 参考http://www.cnblogs.com/xdp-gacl/p/4261895.htm ...

  9. Mybaits入门之起航

    前言 Mybaits技术现在很多公司都在使用,它提供了简单的API可以快速进行数据库操作,所以不管是自己做系统还是找工作都有必要了解一下. 学习一门技术如果是入门的话要么买书要么就是阅读官方的文档,而 ...

  10. mybaits使用存储过程

    如何使用Mybaits调用数据库存储过程,按以下顺序Oracle案例库: 1.在数据库中创建以下存储过程: create or replace procedure pro_hello(p_result ...

随机推荐

  1. Linux运维工程师简历项目经验

    如何做好一个合格的运工程师,运维工程师前景怎么样呢?就这些问题,与大家交流一下.首先对于运维工程师的要求是十分严苛的了,运维工程师不但要针对不同的问题做出响应,而且需要不断的补充自己的知识面,并不继提 ...

  2. [NOI 2005]瑰丽华尔兹

    Description 题库链接 给你一张 \(n\times m\) 的棋盘,棋盘上有一些障碍.一共 \(t\) 个时刻,被分为 \(k\) 段,在每一段中都有一个向上/下/左/右倾斜的趋势(持续时 ...

  3. express框架安装及中间件原理

    本文主要介绍express中间件的原理,来应对面试. 1.安装express及初始化: npm install express-generator -g   =>   express expre ...

  4. [转]ubuntu备份与恢复

    在 使用Ubuntu之前,相信很多人都有过使用Windows系统的经历.如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工 具(通常都是私有软件),然后重启电脑进入备份工具提供 ...

  5. W3C网页标准

    W3C标准是一些列标准的集合!在各个企业的基础上做一定的整合,形成一套标准集,便于推广和使用! 根据网页主要由三部分组成:结构(Structure).表现(Presentation)和行为(Behav ...

  6. Lesson 11 How to grow old

    What, accoroding to the author is the best way to overcome the fear of death as you get older? Some ...

  7. js去后台传递的值

    function test(){ var param = [[${list}]];//以集合为例 } 如果list里面是实体类那么就需要重写toString,或者转为json

  8. 五、生产者消费者模型_ThreadLocal

    1.生产者消费者模型作用和示例如下:1)通过平衡生产者的生产能力和消费者的消费能力来提升整个系统的运行效率 ,这是生产者消费者模型最重要的作用2)解耦,这是生产者消费者模型附带的作用,解耦意味着生产者 ...

  9. R语言 使用rmarkdown写代码

    1.如果是第一次新建markdown文件,需要在有网的条件下,因为要下载一个包才能用markdown 2.为什么使用rmarkdown 使用markdown不仅可以边调试边运行,还可以一次性将所调试好 ...

  10. Element 表单校验不消失问题

    由于不好的命名习惯,所以我的:rule   :ref   :model命名就是写了改,改了再写. 直到今天出现了这个毛病就是  “表单验证不消失” 比方说这里的  ‘密码不能为空’,在我已经输入了数字 ...