MyBatis-Plus_自定义sql

查询专栏:自定义查询sql

1. 在mapper接口中定义接口

/**
     * 查询所有 有条件会自动拼接在where 后边当条件  单表操作
     *
     * @param wrapper
     * @return
     */
    //自定义sql  无分页
    List<User> selectAll(@Param(Constants.WRAPPER) Wrapper<User> wrapper);

2. 在xml文件中书写sql

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatisplus.sampleschapter1.dao.UserMapper">

    <select id="selectAll" resultType="com.example.mybatisplus.sampleschapter1.entity.User">
        select * from user ${ew.customSqlSegment}
    </select>

</mapper>

3. 全局配置

3.1 配置xml的位置

3.2 配置实体类的位置

  • 可以在xml文件中直接写实体类名,省略前面的包路径
mybatis-plus:
  mapper-locations: classpath*:/mapper/**Mapper.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.example.mybatisplus.sampleschapter1.entity

4. 在实体类中测试

 /**
     * 自定义sql
     */
    @Test
    public void selectMy() {
        LambdaQueryWrapper<User> lambdaQuery = Wrappers.<User>lambdaQuery();
        lambdaQuery.likeRight(User::getName, "王")
                .and(lqw -> lqw.lt(User::getAge, 40)
                        .or()
                        .isNotNull(User::getEmail));

        //调用自定义sql
        List<User> userList = userMapper.selectAll(lambdaQuery);
        userList.forEach(System.out::println);
    }
//    select * from user WHERE name LIKE ? AND ( age < ? OR email IS NOT NULL )

5. 控制台输出

在这里插入图片描述
想学习更多微服务、分布式、中间件、数据库、项目快速构建等系列技术
请访问http://gblfy.com
让我们一起进步!!!

猜你喜欢

转载自blog.csdn.net/weixin_40816738/article/details/93382219