首页 > 其他分享 >Mybatis中parameterType用map传参和resultMap结果集映射

Mybatis中parameterType用map传参和resultMap结果集映射

时间:2023-08-14 10:33:32浏览次数:34  
标签:parameterType 传参 实体类 map resultMap 字段名 属性

万能的map:假如实体类(数据库中的表)字段数或参数过多,应当考虑到使用map。(因为如果写一个sql语句,前端传回来的数据就几个而且需要传入的参数类型是实体类,那么我们在contorller层就要构造一个有很多null值的对象传入这样就很麻烦,使用map就很简便了)

xml配置文件中parameterType属性是传参数的类型,如果是基本类型可以省略。下边看一下map的使用。

public interface UserMapper {
    //dao层接口
    int addUser2(Map<String,Object> map);
}
<!--xml中的sql语句-->
    <insert id="addUser2" parameterType="map">
        insert into mybatis.user(id,name,pwd) values(#{mapId},#{mapName},#{mapPwd})
    </insert>
//测试map的使用
    @Test
    public void addUser2(){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap<String, Object> map = new HashMap<>();
        map.put("mapId",6);
        map.put("mapName","李四");
        map.put("mapPwd","456789");
        mapper.addUser2(map);
        sqlSession.commit();
        sqlSession.close();
    }

Map传递参数,直接在sq|中取出key即可! [parameterType="map"]

对象传递参数,直接在sq|中取对象的属性即可! [parameterType="Object"]

只有一个基本类型参数的情况下,可以直接在sq|中取到!

多个参数用Map,或者注解!

解决实体类的属性名和数据库中表的字段名不一致的问题(如果不一致,取出来的对象会出现属性值为空的情况)

解决方案一:在sql语句中取别名,将取出的字段名取别名成和实体类中相对应的属性名。

解决方案二:使用resultMap结果集映射,select查询语句中将resultType属性换成resultMap,然后再写一个resultMap标签,其中id属性对应标签名,type属性是返回值类型,里面有一个result标签,column属性是数据库中的字段名,property属性是实体类的字段名。(数据库中取出来的结果是通过字段名和属性名映射来获取一个实体类的对象,不一致就会出现属性值为空的情况,这时我们使用resultMap将结果存放在里面,然后通过字段名和属性名不一致的一次映射来获取)

<resultMap id="UserMap" type="User">
        <result column="pwd" property="password"/>
    </resultMap>
    <select id="getUserById" parameterType="int" resultMap="UserMap">
        select * from mybatis.user where id = #{id}
    </select>

●resultmap 元素是MyBatis中最重要最强大的元素
●ResultMap的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂-点的语句
只需要描述它们的关系就行了。

标签:parameterType,传参,实体类,map,resultMap,字段名,属性
From: https://www.cnblogs.com/panglinglong/p/17626410.html

相关文章

  • wix中,传参给c#扩展的customAction的 使用笔记
    即时的CA不可回滚,但是能直接在c#里用session["属性名称"]访问上下文的属性如果是延迟执行的CA,需要通过customActionData<!--id需要一样--><CustomActionid="xxx"Execute="deferred"..../><PropertyId="xxx"Value="Arg1=111;Arg2=222;......
  • BootstrapBlazor组件库,组件方法的表达式传参
    BootstrapBlazor组件库,组件方法的表达式传参有时候我们在循环中创建组件的时候,可能想把item的值也一并传入组件的方法事件中去处理,有很多小伙伴就不知道如何去调用事件了。下面是一段实例代码,通过循环遍历来创建图片,并且创建一个删除图片的按钮,这个按钮的OnConfirm方法需要把图......
  • 软件测试|Python函数参数之必传参数、默认参数、可变参数、关键字参数的详细使用
    在Python中,函数参数是定义在函数头部的变量,用于接收传递给函数的数据。Python函数参数有四种类型:必传参数、默认参数、可变参数和关键字参数。每种类型都有不同的使用方式和适用场景。本文将详细介绍这四种函数参数的使用方法。Python函数参数类型必传参数:最常用的,必传确定数量的参......
  • camera2 传参流程以及hal添加自定义参数方法
    camera2传参流程以及hal添加自定义参数方法//设置自动曝光模式mPreviewBuilder.set(CaptureRequest.CONTROL_AF_MODE,CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);/frameworks/base/core/java/android/hardware/camera2/CaptureRequest.javaKey<Integer>CONTROL_AF_MOD......
  • Ajax传参,data与dataType
     在使用Ajax向后端传递数据时,你可以使用多种数据类型。在Ajax的dataType参数中,你可以指定以下几种常用的数据类型:"text":这是默认值,表示返回的数据将被视为纯文本字符串。"json":表示返回的数据将被视为JSON格式的数据。在前端代码中,你可以使用JSON.parse()将返回的数据转......
  • 方法的重载、命令行传参数、可变参数
    方法的重载-重载就是在一个类中,有相同的函数名称,但是形参不同的函数-方法的重载的规则:-1方法名称必须相同-2参数列表必须不同(个数不同,类型不同,参数排列顺序不同等)-3方法的返回类型可以相同也可以不同-4仅仅返回类型类型不......
  • 微信小程序12 跳转,跳转时传参
    我们正常操作的话,肯定有很多页面之间的跳转,在微信小程序中navigator,跳转效果类似html中的a标签<navigatorurl="/pages/index/index">跳转到index</navigator>注意参数url指向要跳转的页面,本地跳转的话基本就是/pages/文件夹/文件名,没有后缀。这样点击标签后就会跳转......
  • post前台传参和后台接收参数
    importcom.fasterxml.jackson.databind.JsonNode;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework......
  • 【mybatis】传参异常:Parameter ‘xxx‘ not found. Available parameters are [xxx,xx
    造成该异常可能的原因有:1、多个传参没有用@Param注解,或者注解导入的包有误。2、#{xxx}填写错误;3、#{xxx}遗漏,特别是有些写在select里的;4、写在bean类里,后面新需求增加变量的,没有加上bean的前缀:"bean.xxx";5、在xml文件里不需要的变量,特别是包含了#{}的,使用不正确的注释方式注......
  • JPA Query in 集合(:和?传参)
    ?传参@Query(value="SELECT*FROMtuxinggeoASstiWHEREtype=?1ANDindex=?2",nativeQuery=true)List<TuxingGeo>getLayerByTypeAndIndex(inttype,intindex);:传参@Query(value="SELECT*FROMtuxinggeoASstiW......