学无先后,达者为师

网站首页 编程语言 正文

MP、MybatisPlus、联表查询、自定义sql、Constants.WRAPPER、ew (一)

作者:m0_59259076 更新时间: 2023-10-11 编程语言

需求: 查询 `animal `表姓名像“狗”的同学的姓名、年龄、班级名称(从`class_table`中获取,其中`class_table`.id = `animal`.id)

Mapper层:

    /**
     *  String WRAPPER = "ew";
     * @param wrapper
     * @return
     */
    List<Animal> selectAnimals(@Param(Constants.WRAPPER) Wrapper<Animal> wrapper);

selectAnimals方法的xml:

    <select id="selectAnimals" resultType="com.zhang.entity.Animal">
        SELECT animal.`name`,animal.`age`,ct.`class_name`
        FROM `animal` animal LEFT JOIN `class_table` AS ct
        ON  animal.`class_id` = ct.`id`
        <where>
            ${ew.sqlSegment}
        </where>
    </select>

注意:此处要使用where标签,当wrapper条件复杂的时候,避免发生奇怪的问题。 

测试:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)
public class Test {

    @Resource
    private AnimalMapper animalMapper;

    @org.junit.Test
    public void test() {
        String name = "狗";

        QueryWrapper<Animal> wrapper = new QueryWrapper<>();
        wrapper.like("animal.name", name);

        animalMapper.selectAnimals(wrapper).forEach(System.out::println);
    }
}

 查询结果:

 控制台打印SQL:

SELECT
	animal.`name`,
	animal.`age`,
	ct.`class_name` 
FROM
	`animal` animal
	LEFT JOIN `class_table` AS ct ON animal.`class_id` = ct.`id` 
WHERE
	(animal.NAME LIKE ?)

原文链接:https://blog.csdn.net/m0_59259076/article/details/125292500

  • 上一篇:没有了
  • 下一篇:没有了
栏目分类
最近更新