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. tensorflow简介、目录

    目前工作为nlp相关的分类及数据治理,之前也使用tensorflow写过一些简单分类的代码,感受到深度学习确实用处较大,想更加系统和全面的学习下tensorflow的相关知识,于是我默默的打开了b站: ...

  2. bootloader与启动地址偏移

    如果项目工程是IAP+APP,则在keil的APP中要么在修改IROM/IRAM的开始地址和大小,并在MAP中勾选设置. 在NVIC中修改system_stm32f10x.c修改 这个在void Sy ...

  3. [经验] Java 服务端 和 C# 客户端 实现 Socket 通信

    由于项目需要, 我需要通过 Java 开发的服务端对 C# 作为脚本语言开发的 unity 项目实现控制 话不多说, 直接上代码 首先, 我们先来构建服务端的代码, 服务端我们使用 Java 语言 i ...

  4. NOIP2019 旅行

    注意!注意!前方高能!本题卡常!!! 我们发现,所有的狗血剧情都在告诉我们,树的话直接dfs就出来了 那么基环树呢? 其实只要暴力删边,理论上的复杂度是可以过的qwq 但是删哪条边呢? 这里要引出一个 ...

  5. Codeforces1304F.Animal Observation

    分析一下得知是DP问题,时间复杂度符合,设dp[i][j]为从第i天开始,第j个位置能得到的最大值,其有三种转移状态 1.与上一天的选择有重合 2.与上一天的选择没有重合,且上一天的选择在左边 3.与 ...

  6. mysql path妙用

    CREATE TABLE `lc_c_user_path` ( `id` INT ( ) UNSIGNED NOT NULL AUTO_INCREMENT, `user_id` VARCHAR ( ) ...

  7. CSS - 滑动门技术

    1. 概念: 1.1 为了使各种特殊形状的背景能够自适应元素中文本内容的多少,出现了CSS滑动门技术. 1.2 使各种特殊形状的背景能够自由拉伸滑动,以适应元素内部的文本内容,可用性更强. 1.3 最 ...

  8. freeswitch install

    https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7

  9. c#数据四种执行方法(ExecuteNonQuery)-----转载

    c#数据四种执行方法(ExecuteNonQuery)   1.使用ExecuteReader()操作数据库 2.使用ExecuteNonQuery()操作数据库 3.使用ExecuteScalar( ...

  10. 神机iPhone6停产,苹果产业链应该感谢它还是痛恨它?

    据国内媒体报道,一些苹果上游供应商已经接到通知,iPhone6系列将会在5月底彻底停产,一时间,竟在网络上引发汹涌的怀念之情.iPhone6的特别之处在于它是苹果第一款大屏幕的智能手机,标志着库克彻底 ...