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. LeetCode 83. Remove Duplicates from Sorted List(从有序链表中删除重复节点)

    题意:从有序链表中删除重复节点. /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode ...

  2. spring boot ApplicationRunner使用

    spring boot ApplicationRunner使用 它的使用比较简单,实现ApplicationRunner的run方法 package com.hikvision.pbg.jc.conf ...

  3. java也可以做出很漂亮的界面

    其实java想把界面做漂亮点的话,只要把背景做好就行了,在jdk1.6以后可以继承JFrame,或JWindow后如下设置即可 setUndecorated(true);//不要标题栏的修饰,主要防止 ...

  4. JSP数据交互二

    1.JSP内置对象:JSP内置对象是 Web 容器创建的一组对象,不用通过手动new就可以使用2.JSP9大内置对象:      对象名称 类型 request (请求对象)  javax.servl ...

  5. jQuery Validation Engine

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...

  6. Mac OS 下升级gcc遇到的坑

    为了升级gcc,原来版本是4.8,想升级到4.9,因为在Mac上安装cocoNLP一直出错,想试试看是不是gcc版本太低的原因,因此在此想要升级到4.9 经历了三个问题: - brew update太 ...

  7. BEC合约整数溢出漏洞还原与分析

    一.币圈一秒,人间一年 有道是币圈一日,人间一年.这个说法又得升级了,叫币圈一秒,人间一年. 前不久,币圈又出大事啦.BEC智能合约被爆出整数溢出漏洞,导致黑客能无限印币,在一次交易中,也就那么几秒钟 ...

  8. 「NOIP2012」开车旅行

    传送门 Luogu 解题思路 第一步预处理每个点后面的最近点和次近点,然后就是模拟题意. 但是如果就这么搞是 \(O(N^2)\) 的,不过可以过70分,考场上也已经比较可观了. 考虑优化. 预处理最 ...

  9. 认识python中的super函数

    需求分析 在类继承中,存在这么一种情况: class Human(object): def Move(self): print("我会走路...") class Man(Human ...

  10. QQ企业通----类库的设计----UDPSocket组件等

    知识点: IPEndPoint    将网络端点表示为 IP 地址和端口号. UdpClient   提供用户数据报 (UDP) 网络服务. UdpClient对象.Close 关闭 UDP 连接. ...