详解Mybatis查询之resultType返回值类型问题【4种情况】

详解Mybatis查询之resultType返回值类型问题【4种情况】

编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6

文章目录

引言一、查询单行数据返回单个对象二、查询多行数据返回对象的集合三、 查询单行数据返回Map[Key,Value]集合四、 查询多行数据返回Map集合

引言

在Mybatis中,resultType属性是selcet元素【映射查询语句】中常用的属性之一,这个属性是什么意思呢?Mybatis官方对它的描述如下所示:期望从这条语句中返回结果的类全限定名或别名。 注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。 resultType 和 resultMap 之间只能同时使用一个。

一、查询单行数据返回单个对象

👉应用场景

例如根据id或者字段条件查询获取表中的某一个字段值

代码示例如下

①Java代码示例如下

//根据empId来查出对应的employee对象

public Employee selectByempId(int empId);

②sql映射文件中相关代码如下

❗注意:

①resultType中的类名一般是写类的全类名,但如果之前自定义了类的别名,也可以写上别名去

②如果是java 的基本类型,就不需要别名的

别名映射的类型_bytebyte_longlong_shortshort_intint_booleanbooleanintegerIntegerstringStringdateDatebooleanBoolean

🥇如何给类自定义别名?

在Mybatis-config.xml文件中给类起别名

①直接给类起别名

代码示例如下:

②给包下的类批量起别名

代码示例如下:

ps: 只要写包名即可,mybatis会自动去扫描包下的所有类,并以类名的首字母小写给类起别名

在类上使用注解@Alias给类起别名

代码示例如下:

package mybatis.pojo;

@Alias("emp")

//使用@Alias注解给Employee类起了别名emp

public class Employee {

}

二、查询多行数据返回对象的集合

代码示例如下:

①Java代码示例如下

//查看所有的员工信息

public List showAllEmployee();

②sql映射文件中相关代码如下

❗ 注意:如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。

三、 查询单行数据返回Map[Key,Value]集合

👉应用场景

数据库中的字段作为Map的key,查询结果作为Map的Value

⭐用法案例

根据员工编号查询指定的员工信息,并用Map集合返回结果

①在Mapper接口书写相应的方法

//根据员工编号查询指定的员工信息,并用Map集合返回结果

public Map showEmpoloyByempID(int empId);

②在映射文件中书写相应的sql

③测试

@Test

public void test06(){

try {

String resource = "mybatis-config.xml";

InputStream inputStream = Resources.getResourceAsStream(resource);

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

//通过SqlSessionFactory对象调用openSession();

SqlSession sqlSession = sqlSessionFactory.openSession();

//获取EmployeeMapper的代理对象

EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);

Map map = employeeMapper.showEmpoloyByempID(1);

System.out.println(map);

} catch (IOException e) {

e.printStackTrace();

}

}

四、 查询多行数据返回Map集合

👉应用场景

Map

对象的id作为key

对象作为value

⭐用法案例

查询所有的员工信息,使用Map集合返回查询结果

①在Mapper接口中书写相应方法

//查询所有的员工信息

@MapKey("id")

public Map showAll();

②在对应的映射文件中书写相关的sql

③测试

@Test

public void test07(){

try {

String resource = "mybatis-config.xml";

InputStream inputStream = Resources.getResourceAsStream(resource);

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

//通过SqlSessionFactory对象调用openSession();

SqlSession sqlSession = sqlSessionFactory.openSession();

//获取EmployeeMapper的代理对象

EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);

Map map = employeeMapper.showAll();

System.out.println(map);

} catch (IOException e) {

e.printStackTrace();

}

}

🎭 相关推荐 🎭

美团商家入驻费用标准是多少最新?
365下载bet

美团商家入驻费用标准是多少最新?

📅 08-07 👀 4664
音乐唱片
365下载bet

音乐唱片

📅 07-30 👀 5050
一人为何创建IR?因他怯战而投了塔子!
365下载bet

一人为何创建IR?因他怯战而投了塔子!

📅 07-14 👀 4920