1. 程式人生 > 其它 >五、自定義Mapper\六、自定義Service

五、自定義Mapper\六、自定義Service

目錄

五、自定義Mapper

當通用Mapper無法滿足我們的需求時,我們可以自定義基於Mapper介面的xml檔案,並在xml檔案中配置SQL語句

1、介面方法定義

在UserMapper介面中定義如下方法

List<User> selectAllByName(String name);

2、建立xml檔案

在resources目錄中建立mapper目錄,建立UserMapper.xml

<?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.atguigu.mybatisplus.mapper.UserMapper">
   <sql id="Base_Column_List">
       id, name, age, email
   </sql>
    <select id="selectAllByName" resultType="com.atguigu.mybatisplus.entity.User">
        select
        <include refid="Base_Column_List"/>
        from user
        where
        name = #{name}
    </select>
</mapper>

注意:MP中mapper目錄是持久層對映檔案的預設目錄,如果是其他目錄,需要配置mapper-locations,例如:

mybatis-plus.mapper-locations=classpath:xml/*.xml

3、測試條件查詢

在MapperTests中建立如下測試用例

@Test
public void testSelectAllByName(){
    List<User> users = userMapper.selectAllByName("Helen");
    users.forEach(System.out::println);
}

六、自定義Service

1、新增介面方法

UserService中新增介面方法

List<User> listAllByName(String name);

2、實現介面方法

@Override
public List<User> listAllByName(String name) {
    // baseMapper物件指向當前業務的mapper物件
    return baseMapper.selectAllByName("Helen");
}

4、測試

ServiceTests中新增測試方法

@Test
public void testListAllByName(){
    List<User> users = userService.listAllByName("Helen");
    users.forEach(System.out::println);
}