Mybatis映射文件——ParameterType

2023-12-07 09:48

本文主要是介绍Mybatis映射文件——ParameterType,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

输入映射ParameterType

指定输入参数的java类型,可以使用别名或者类的全限定名。它可以接受简单类型、pojo对象、HashMap

传递简单类型

在这里插入图片描述

传入POJO类型

在这里插入图片描述

传入POJO包装对象:传递比较复杂的信息

传入map对象

1接口中声明方法:

   public List<User> findUserByMap(Map<String,Object> map);

2映射文件修改

<!--//通过Map查询--><select id="findUserByMap" parameterType="hashmap" resultType="user">select * from user u where username like '%${username}%' and sex=#{sex};</select>

3测试

 /** 多条件查询* */@Testpublic void test2() throws IOException {UserMapper userMapper=session.getMapper(UserMapper.class);Map<String,Object> map=new HashMap<String, Object>();map.put("username","张");map.put("sex","1");List<User> list=userMapper.findUserByMap(map);System.out.println(list);}

输出映射resultType/resultMap

resultType:使用resultType进行结果映射时,查询的列名和映射的pojo属性名完全一致,该列才能映射成功。如果查询的列名和映射的pojo属性名全部不一致,则不会创建pojo对象,如果查询的列名和映射的pojo属性有一个不一致,就会创建pojo对象。

输出简单类型

当输出结果只有一列时,可以使用ResultType指定简单类型作为输出结果类型。
1、UserMapper中创建一个借口,查询用户人数

 /*** 返回用户个数* @param vo* @return*/public int findUserCount(UserQuerVO vo);

2、UserMapper.xml中设置方法

 <!--查找用户的个数--><!-- 设置返回数据为基本数据类型--><select id="findUserCount" parameterType="UserQuerVO" resultType="int">select  count(*) from user  where  sex=#{user.sex};</select>

3、测试

public class Demo6 {SqlSession session;@Beforepublic void before() throws IOException {System.out.println("before......获取session");
//      *  a)	读取配置文件;InputStream is= Resources.getResourceAsStream("SqlMapConfig.xml");
//        *  b)	通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(is);session=factory.openSession();}@Afterpublic void after(){session.close();}/*** 查询该性别的人数* @throws IOException*/@Testpublic void test1() throws IOException {UserMapper userMapper=session.getMapper(UserMapper.class);//通过模型的包装类来查询用户UserQuerVO query=new UserQuerVO();User user=new User();user.setSex("1");query.setUser(user);int count=userMapper.findUserCount(query);System.out.println("人数为"+count);}}

ResultMap

如果查询出来的列名和属性名不一致,通过定义一个resultMap将列名和pojo属性名之间做一个映射关系
1、定义resultMap

/*** 用resultMap类型为返回值类型* @param UserId* @return*/public User findUserByIdResultMap(int UserId);

2、使用resultMap作为statement的输出映射类型。

 <!--设置返回数据类型为resultMap--><resultMap id="userResultMap" type="user"><id property="id" column="id_"></id><result property="username" column="username_"></result><result property="sex" column="sex_"></result><result property="birthday" column="birthday_"></result><result property="address" column="address_"></result></resultMap><select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap">select  id ,username username_,sex sex_,birthday birthday_,address address_from user where id=#{id};</select>

3、测试

/*** 结果类型为resultMap* @throws IOException*/@Testpublic void test2() throws IOException {UserMapper userMapper=session.getMapper(UserMapper.class);User user=userMapper.findUserByIdResultMap(10);System.out.println("查询结果"+user);}

这篇关于Mybatis映射文件——ParameterType的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/465406

相关文章

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

mybatis-plus如何根据任意字段saveOrUpdateBatch

《mybatis-plus如何根据任意字段saveOrUpdateBatch》MyBatisPlussaveOrUpdateBatch默认按主键判断操作类型,若需按其他唯一字段(如agentId、pe... 目录使用场景方法源码方法改造首先在service层定义接口service层接口实现总结使用场景my