当前位置: 首页 > news >正文

做交流网站中国营销网站

做交流网站,中国营销网站,投资公司取什么名字最好,青海省住房和城乡建设网站MybatisPlus 核心功能 文章目录 MybatisPlus 核心功能1. 条件构造器1.1 QueryWrapper1.2 LambdaQueryWrapper(推荐)1.3 UpdateWrapper1.4 LambdaUpdateWrapper 2. 自定义SQL3. Service接口 1. 条件构造器 当涉及到查询或修改语句时,MybatisP…

MybatisPlus 核心功能

文章目录

  • MybatisPlus 核心功能
    • 1. 条件构造器
      • 1.1 QueryWrapper
      • 1.2 LambdaQueryWrapper(推荐)
      • 1.3 UpdateWrapper
      • 1.4 LambdaUpdateWrapper
    • 2. 自定义SQL
    • 3. Service接口

1. 条件构造器

当涉及到查询或修改语句时,MybatisPlus需要使用条件构造器来进行条件判断,它提供了以下条件构造器:

在这里插入图片描述

  • QueryWrapperLambdaQueryWrapper:用来构建select、delete、update的where条件部分
  • UpdateWrapperLambdaUpdateWrapper:通常只有在set语句比较特殊的时候才使用

1.1 QueryWrapper

QueryWrapper下有许多方法可以使用,用来充当指定where条件部分:

  • select:指定需要查询的字段
  • eq:和指定内容相等的数据
  • like:进行模糊查询
  • ge:比指定数大的数据
  • le:比指定数小的数据

代码示例

①查询出名字中带o的,存款小于等于1000元的人的id、username、info、balance字段:

@Test
void testQueryWrapper() {// 1. 构建查询条件QueryWrapper<User> wrapper = new QueryWrapper<User>().select("id", "username", "info", "balance").like("username", "o").le("balance", 1000);// 2. 查询List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);
}

在这里插入图片描述

②更新用户名为jack的用户的余额为2500:

@Test
void testUpdateByQueryWrapper1() {// 1. 要更新的数据User user = new User();user.setBalance(2500);// 2. 更新的条件QueryWrapper<User> wrapper = new QueryWrapper<User>().eq("username", "jack");// 3. 更新数据userMapper.update(user, wrapper);
}

在这里插入图片描述

③删除名为Thomas的数据:

@Test
void testDeleteByQueryWrapper() {// 1. 删除的条件QueryWrapper<User> wrapper = new QueryWrapper<User>().eq("username", "Thomas");// 2. 删除数据userMapper.delete(wrapper);
}

在这里插入图片描述

1.2 LambdaQueryWrapper(推荐)

LambdaQueryWrapper的具体作用与QueryWrapper一样,用来构建select、delete、update的where条件部分,但它与QueryWrapper的不同在于,LambdaQueryWrapper更能防止硬编码,因此更推荐使用LambdaQueryWrapper

LambdaQueryWrapper在操作上和的不同点便是使用了类名::方法的方式来填充数据,而不是将查询条件“写死”。

代码示例

①查询出名字中带o的,存款小于等于1000元的人的id、username、info、balance字段:

@Test
void testLambdaQueryWrapper() {// 1.构建查询条件LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>().select(User::getId, User::getUsername, User::getInfo, User::getBalance).like(User::getUsername, "o").le(User::getBalance, 1000);// 2.查询List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);
}

②更新用户名为jack的用户的余额为5000:

@Test
void testUpdateByLambdaQueryWrapper() {// 1. 要更新的数据User user = new User();user.setBalance(5000);// 2. 更新的条件LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>().eq(User::getUsername, "XiaoMi");// 3.更新数据userMapper.update(user, wrapper);
}

相较于QueryWrapper更推荐使用LambdaQueryWrapper来作为条件构造器!!

1.3 UpdateWrapper

set语句比较特殊时可以使用UpdateWrapper来进行条件构造,如加减数据:

代码示例

更新id为1,2,4的用户的余额,扣200:

@Test
void testUpdateWrapper1() {List<Long> ids = List.of(1L, 2L,4L);UpdateWrapper<User> wrapper = new UpdateWrapper<User>().setSql("balance = balance - 200").in("id", ids);userMapper.update(null, wrapper);
}

在这里插入图片描述

1.4 LambdaUpdateWrapper

使用方式与UpdateWrapper基本相同,只是将指定字段修改为可变字段:

代码示例

更新id为1,2,4的用户的余额,扣200:

@Test
void testLambdaUpdateWrapper() {List<Long> ids = List.of(1L, 2L,4L);LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<User>().setSql("balance = balance - 200").in(User::getId, ids); // 这里与`UpdateWrapper`不同userMapper.update(null, wrapper);
}

在这里插入图片描述

2. 自定义SQL

MyBatisPlus中,当我们需要使用复杂的sql语句进行操作时,往往是通过自定义SQL+条件构造器的方式来解决问题的!即通过条件构造器来构建复杂的Where的条件,剩余部分则通过自定义sql解决:

代码示例

更新id为1,2,3的用户的余额,扣指定金额:

  1. 基于Wrapper构建Where条件

    @Test
    void testCustomSqlUpdate1() {// 1. 更新条件List<Long> ids = List.of(1L, 2L, 3L);int amount = 200;// 2. 定义条件LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>().in(User::getId, ids);// 3. 调用自定义SQL方法userMapper.updateBalanceByLBIds(wrapper, amount);
    }
    
  2. 在Mapper方法参数中通过Param注解声明wrapper变量名称, 必须写ew

    public interface UserMapper extends BaseMapper<User> {void updateBalanceByLBIds(@Param("ew") LambdaQueryWrapper<User> wrapper, @Param("amount") int amount);
    }
    
  3. 编写自定义sql,并使用Wrapper充当条件

    <update id="updateBalanceByLBIds">update tb_user set balance = balance - #{amount} ${ew.customSqlSegment}
    </update>
    

    在这里插入图片描述

3. Service接口

MybatisPlus除了给我们提供快速实现CURD的功能外,也为我们提供了可直接使用的Service接口:

在这里插入图片描述

IService接口为我们提供了一系列可以封装好的接口,而我们需要做的就是继承然后使用它:

在这里插入图片描述

使用流程

  1. 自定义Service接口并继承IService接口

    public interface MUserService extends IService<User> {// 注意需要给上述泛型提供实体类
    }
    
  2. 自定义Service实现类,实现自定义接口并继承ServiceImpl接口

    @Service
    public class MUserServiceImpl extends ServiceImpl<UserMapper, User> implements MUserService {// 注意需要给上述泛型提供Mapper接口和实体类
    }
    

测试一下

@SpringBootTest
class MUserServiceImplTest {@Autowiredprivate MUserService mUserService;@Testvoid testQuery() {List<User> users = mUserService.listByIds(List.of(1L,2L,3L));users.forEach(System.out::println);}@Testvoid testInsert() {User user = new User();user.setUsername("XiaoTian");user.setPassword("11111");user.setPhone("10085");user.setBalance(200);user.setInfo(UserInfo.of(25, "体育老师", "man"));user.setCreateTime(LocalDateTime.now());user.setUpdateTime(LocalDateTime.now());mUserService.save(user);}}

在这里插入图片描述

在这里插入图片描述以上便是MybatisPlus提供的一些核心功能了!!

http://www.tj-hxxt.cn/news/84921.html

相关文章:

  • 黄页88官网seo营销论文
  • 秦皇岛做网站优化网站seo技术教程
  • 电商网站开发人员人数郑州seo建站
  • 做竹鼠网站互联网培训
  • 深圳最好的营销网站建设公司焊工培训内容
  • 链家在线网站是哪个公司做的什么软件可以免费引流
  • 郑州微信网站制作建站流程
  • 专业做高品质的代工网站网站优化方案模板
  • 从事电子商务的网站建设韶关今日头条新闻
  • 做美女图片网站挣钱么前端开发
  • 设计网站b网店运营推广方案
  • 常州微网站建设云搜索app
  • 网站开发是BS架构吗培训机构网站制作
  • 宣传网站怎么做的近期国际新闻热点大事件
  • 做雇主品牌的网站建设网站制作
  • seo排名关键词点击网络推广的优化服务
  • metinfo网站建设一个平台怎么推广
  • app和网站的关系百度问一问人工客服怎么联系
  • 如何做自己网站云播中国销售网
  • 沁县网站建设香港头条新闻
  • 网站免费源码专注网络营销推广公司
  • 网站没收录了怎么办google 推广优化
  • 教人做窗帘的视频网站免费外链发布
  • 长沙网站大全百度竞价推广登录
  • 云服务器上放多个网站企业微信营销系统
  • 双语网站建设定制开发站点搜索
  • 厦门思总建设有限公司网站友情链接举例
  • 网站的透明图片怎么做上海优化公司选哪个
  • 深圳网站建设公司 概况成都网站制作维护
  • 临海高端网站设计新感觉建站搜索到的相关信息