MybatisPlus快速入门

1,编写项目,初始化依赖,使用Spring boot初始化

2,导入依赖

<!--数据库驱动-->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

 

<!--lombok-->

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

</dependency>

 

<!--mybatis-plus-->

<dependency>

<groupId>com.baomidou</groupId>

<artifactId>mybatis-plus-boot-starter</artifactId>

<version>3.0.5</version>

</dependency>

 

 

3,连接数据库

#mysql5驱动不同com.mysql.jdbc.Driver

#mysql8驱动不同com.mysql.cj.jdbc.Driver需要增加时区配置serverTimezone=GMT%2B8

#高版本兼容低版本

spring.datasource.username=root

spring.datasource.password=123

spring.datasource.url=jdbc:mysql://localhost:3306/mybatisplus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

4.传统pojo-dao(连接mybatis,配置mapper.xml文件)-service-controller

4,使用mybatisplus之后

Pojo:

@Data

@AllArgsConstructor

@NoArgsConstructor

publicclassUser{

privateLongid;

privateStringname;

privateIntegerage;

privateStringemail;

}

mapper接口

//在对应的Mapper上面继承基本类BaseMapper

@Repository//代表持久层

publicinterfaceUserMapperextendsBaseMapper<User>{

}

注意点:我们需要在主启动类上去扫描mapper包下的所有接口

@MapperScan("com.wyy.mapper")//扫描mapper包下的所有接口

测试类中测试

@Autowired

privateUserMapperuserMapper;

@Test

voidcontextLoads(){

//查询全部

List<User>users=userMapper.selectList(null);

users.forEach(System.out::println);

}

5.配置日志

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

作用:能在控制台查看执行步骤,

6.insert插入

@Test

voidtsetinsert(){

//新增

Useruser=newUser();

user.setName("wyy");

user.setAge(18);

user.setEmail("123321123");

intinsert=userMapper.insert(user);

System.out.println("insert="+insert);

System.out.println("user="+user);//会自动生成id

}

id会自动生成

数据可插入的id默认值:全局唯一id

主键生成策略:

https://cloud.tencent.com/developer/article/1165714

Twitter的snowflake算法

snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。

主键自增

1在实体类字段上 @TableId(type=IdType.AUTO)

2,数据库字段必须也是自增

3,插入数据就行了

 

7,更新操作

//修改

@Test

voidtestUpdate(){

Useruser=newUser();

user.setId(5L);

user.setName("wyy123");

user.setAge(123);

userMapper.updateById(user);

}

 

所有的sql都是帮你动态配置的!!!!!!!!!

8.自动填充

1,数据库字段没有设置默认值,更新操作

2,字段实体类属性上需要增加注解:

 

3.便似处理器来处理这个注解

4,测试插入

5,测试时间,查看更新时间即可

9.乐观锁

1乐观锁:十分乐观,它总是认为不会出现问题,无论干什么都不会去上锁,出现问题,再次更新值测试

2,悲观锁:十分悲观,他总是认为会出现问题,无论干什么都会去上锁,再去操作

测试MyBatisPlus乐观锁:\

1,给数据库加上version字段默认值1

2,实体类加上对应注解

3,注册组件

4,测试

10,查询操作

11,分页查询

1,配置拦截器组件

2,直接使用Page对象

11,删除操作

12,逻辑删除

物理删除:从数据库中直接移除

逻辑删除:在数据库中没有被移除,通过一个变量来让它失效,deleted=0   ==>  deleted=1

管理员可查看到数据记录,类之于回收站,防止数据丢失

测试:

1,在数据库中添加一个字段,默认值为0!!!!

2,在实体类中增加属性,逻辑删除注解

3,配置

4,测试

13,性能分析插件

作用:性能分析拦截器,用于输出每条sql语句以及执行时间

1,导入插件

//性能分析插件

@Bean

@Profile({"dev","test"})//设置devtest环境开启

publicPerformanceInterceptorperformanceInterceptor(){

PerformanceInterceptorperformanceInterceptor=newPerformanceInterceptor();

performanceInterceptor.setMaxTime(100);//设置sql最大执行时间,超过不执行,,,,,毫秒值

performanceInterceptor.setFormat(true);//是否格式化代码

returnperformanceInterceptor;

}

要在spring boot中配置环境为dev或者test环境

2,测试使用

@Test

publicvoidcontextLoads(){

//查询全部

List<User>users=userMapper.selectList(null);

users.forEach(System.out::println);

}

14,条件构造器

测试一:

@Test

publicvoidtest2(){

//查询name,enail不为空的,且age大于等于12的

QueryWrapper<User>wrapper=newQueryWrapper();

wrapper.isNotNull("name")

.isNotNull("email")

.ge("age",12);

userMapper.selectList(wrapper).forEach(System.out::println);

}

测试二:

@Test

publicvoidtest2(){

//查询name,Tom的

QueryWrapper<User>wrapper=newQueryWrapper();

wrapper.eq("name","Tom");

userMapper.selectOne(wrapper);

}

测试三:

@Test

publicvoidtest3(){

//查询年龄在20~30之间的

QueryWrapper<User>wrapper=newQueryWrapper();

wrapper.between("age",20,30);

Integerinteger=userMapper.selectCount(wrapper);

System.out.println("integer="+integer);

}

测试四:

@Test

publicvoidtest4(){

//查询name中不包含e的,且email以t开头的

QueryWrapper<User>wrapper=newQueryWrapper();

wrapper.notLike("name","y")

.likeRight("email","t");

List<Map<String,Object>>maps=userMapper.selectMaps(wrapper);

maps.forEach(System.out::println);

}

测试五:

@Test

publicvoidtest5(){

//id在子查询中查出来

QueryWrapper<User>wrapper=newQueryWrapper();

wrapper.inSql("id","selectidfromuserwhereid>3");

List<Object>objects=userMapper.selectObjs(wrapper);

objects.forEach(System.out::println);

}

测试六:

@Test

publicvoidtest6(){

//根据id降序排列

QueryWrapper<User>wrapper=newQueryWrapper();

wrapper.orderByDesc("id");

List<User>users=userMapper.selectList(wrapper);

users.forEach(System.out::println);

}

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值