Mybatis对数据库数据的查询

本文详细介绍了Mybatis对数据库数据的查询,包括简单类型映射、多组数据返回、POJO对象输出映射,以及复杂类型如resultMap的使用。深入探讨了多表关联处理、嵌套查询和懒加载的概念,提供了具体的接口定义、xml配置及测试案例,揭示了Mybatis在处理数据库查询时的灵活性和高效性。
摘要由CSDN通过智能技术生成

简单类型的映射

返回的是简单基本类型

接口中的定义

    int getAdminCount();//返回数据库总共还几条数据

xml中具体的实现

    <select id="getAdminCount" resultType="int">
        select count(*) from admin
    </select>

这里我选用了测试的一个jar包,就直接用来测试了,没有试用main方法。

    @Test//返回数据港总共还几条数据
    public void find3() {
   
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        AdminMapper mapper = sqlSession.getMapper(AdminMapper.class);

        int count = mapper.getAdminCount();

        System.out.println(count);
        sqlSession.commit();
        sqlSession.close();
    }

测试结果
在这里插入图片描述

返回多组数据

在数据库当中,查找多组的数据,就需要接受,而接受主要就靠的是集合来接受数据库所返回的数据。

接口中的定义:

    /*多张表*/
    List<Admin> getAdminList();//返回的数据以集合的形式
    //查询的结果是一个集合,这边通过List自动封装为集合

Mybatis中xml的定义:

    <select id="getAdminList" resultType="Admin">
        select * from admin
    </select>

这里我选用了测试的一个jar包,就直接用来测试了,没有试用main方法。

   @Test//传递的是列,返回的是集合
   public void findList() {
   
       SqlSession sqlSession = MybatisUtil.getSqlSession();
       AdminMapper mapper = sqlSession.getMapper(AdminMapper.class);

       List<Admin> adminList = mapper.getAdminList();
       System.out.println(adminList);
       sqlSession.commit();
       sqlSession.close();
   }

这里我试用了日志来返回查看数据库返回了几条的数据,并具体打印出来
在这里插入图片描述

POJO对象输出映射

POJO (Plain Old Java Objects,普通的 Java 对象)

如果数据库中表的列名和类中的属性名完全相同,则Mybatis会自动的将查询结果封装到这个POJO的对象当中去

如果java中使用了标准的驼峰命名,则数据库中也使用的是标准的下划线连接命名法,这样就可以开始全局的设置实现自动转换。

    <settings>
            <!--开启从经典的数据库名到java驼峰命名之间的转换
        user_name==>userName-->
        <!--驼峰命名自动映射-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
public User findUserInfoById(int id)
<select id="findAdminInfoById" parameterType="int" resultType="User"> 
	select * from dmin where id=#{id} 
</select>

复杂类型的返回

resultMap

特殊情况下,数据库的列名和属性名就是不一致,就要解决这个映射的问题。
那么这里就是使用resultMap。resultMap就是结果集的映射。就是自定义的一种映射

但是resultMap主要多用于多表关联。

定义 resultMap

resultMap中的的标签主要有个id(映射主键)和result(映射非主键)
column表示的数据库中的数据列名,property表示的是类中定义的属性名

如果类中的属性名和数据库中的列名一致,可以不用将全部的数据写在resultMap当中
只写一些所需要的数据名之间的联系,一样的是不用写的。

    <!--resultMap就是对结果集的映射-->
    <!--column表示的数据库中的数据列名,property表示的是类中定义的属性名-->
    <!--如果类中的属性名和数据库中的列名一致,可以不用将全部的数据写在resultMap当中
    只写一些所需要的数据名之间的联系-->
    <resultMap id="one" type="Admin">
        <id column="id" property="id"></id>
        <result column="account" property="account"></result>
        <result column="password" property="password"></result>
        <result column="sex" property="sex"></result>
    </resultMap>
  1. resutlMap 的 id 属性是 resutlMap 的唯一标识,本例中定义为 “one”。
  2. resutlMap 的 id 属性是映射的 POJO 类。
  3. id 标签映射主键,result 标签映射非主键。
  4. property 设置 POJO 的属性名称,column 映射查询结果的列名称

使用resultMap

    <select id="getAdminById" resultMap="one">
        select * from admin where id = #{id}
    </select>

输出的映射不是resultType,而是resultMap,resultMap的值填写定义好id的resultMap值

再定义一个resultMap值对应的resultMap值

    <resultMap id="one" type="Admin">
        <id column="id" property="id"></id>
        <result column
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值