IDEA这样配置,好用到爆炸!!!

封装 MyBatis 输出结果

resultType

resultType: 执行sql 得到 ResultSet 转换的类型,使用类型的完全限定名或别名。 注意如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身。resultType  和 resu ltMap,不能同时使用。

image.png

A、 简单类型

接口方法:

int countStudent();

mapper 文件:

< select id="countStudent" 

        resultType="int"> select count(*) from 

        student

< /select>
复制代码

测试方法:

@Test

public void testRetunInt(){

        int count = studentDao.countStudent(); 

        System.out.println("学生总人数:"+ count);

}
复制代码

B、对象类型

接口方法:

Student selectById(int id);

mapper 文件:

<select id="selectById" 

        resultType="com.bjpowernode.domain.Student"> select 

        id,name,email,age from student where id=#{studentId}

</select>
复制代码

框架的处理: 使用构造方法创建对象。调用setXXX 给属性赋值。

Student student = new Student();

image.png

注意:Dao 接口方法返回是集合类型,需要指定集合中的类型,不是集合本身。

image.png

C、Map

sql 的查询结果作为 Map 的key 和value。推荐使用Map<Object,Object>。

注意:Map 作为接口返回值,sql 语句的查询结果最多只能有一条记录。大于一条记录是错误。

接口方法:

Map<Object,Object> selectReturnMap(int id);

mapper 文件:

<select id="selectReturnMap" resultType="java.util.HashMap"> 

       select name,email from student where id = #{studentId}

</select>
复制代码

测试方法:

@Test

public void testReturnMap(){

        Map<Object,Object> retMap = studentDao.selectReturnMap(1002);   

        System.out.println("查询结果是 Map:"+retMap);

}
复制代码

resultMap

resultMap 可以自定义sql 的结果和 java 对象属性的映射关系。更灵活的把列值赋值给指定属性。

常用在列名和java 对象属性名不一样的情况。

使用方式:

1.先定义resultMap,指定列名和属性的对应关系。

2.在< select>中把 resultType 替换为resultMap。

接口方法:

List< Student> selectUseResultMap(QueryParam param);

mapper 文件:

image.png

测试方法:

image.png

实体类属性名和列名不同的处理方式

(1) 使用列别名和< resultType>

步骤:

1. 创建新的实体类 PrimaryStudent

image.png

2. 接口方法

List< PrimaryStudent> selectUseFieldAlias(QueryParam param);

3. mapper 文件:

image.png

4. 测试方法

image.png

(2) 使用< resultMap>

步骤:

1. 接口方法

List<PrimaryStudent> selectUseDiffResultMap(QueryParam param);

2. mapper 文件:

image.png

3. 测试方法

image.png

模糊 like

模糊查询的实现有两种方式, 一是java 代码中给查询数据加上“%” ; 二是在mapper 文件sql 语句的条件位置加上“%”

需求:查询姓名有“力”的

例 1: java 代码中提供要查询的 “%力%”

接口方法:

List<Student> selectLikeFirst(String name);

mapper 文件:

<select id="selectLikeFirst" 

        resultType="com.bjpowernode.domain.Student"> select 

        id,name,email,age from student

        where name like #{studentName}

</select>
复制代码

测试方法:

@Test

public void 

        testSelectLikeOne(){ String 

        name="%力%";

        List<Student> stuList = studentDao.selectLikeFirst(name); 

        stuList.forEach( stu -> System.out.println(stu));

}
复制代码

例 2:mapper 文件中使用 like name "%" #{xxx} "%"

接口方法:

List<Student> selectLikeSecond(String name);

mapper 文件:

<select id="selectLikeSecond"

        resultType="com.bjpowernode.domain.Student"> select id,name,email,age 

       from student

       where name like "%" #{studentName} "%"

</select>
复制代码

测试方法:

@Test

public void 

        testSelectLikeSecond(){ String 

        name="力";

        List<Student> stuList = studentDao.selectLikeSecond(name); 

        stuList.forEach( stu -> System.out.println(stu));

} 


作者:凌小可可
链接:https://juejin.cn/post/7021350272463011870
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值