MyBatis输入映射和输出映射实例详解
发布时间 - 2026-01-10 23:02:37 点击率:次什么是 MyBatis ?

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
我们知道,mapper.xml是我们配置操作数据库的sql语句的地方。其中每个sql语句对应着一个方法,每个方法都有自己的输入输出参数类型。那么这些类型都是怎么配置的呢?今天我们来一起学习下。
输入映射
首先是输入类型,输入类型分为以下几种:1.基本类型。2.pojo对象类型。3.pojo包装对象。所谓的包装对象,可以理解为,一个对象里面包含着另外一个对象。
简单类型
简单输入类型,比较简单。在传入参数的时候,直接将参数类型配置到parameterType中,代码如下:
<select id="findUserById" parameterType="int" resultType="cn.itcast.pojo.User">
SELECT * FROM user where id=#{id}
</select>
其中的sql语句内的占位符或者拼接符中的内容可以随意书写,没有实际意义。不过建议最好见名知意。以便于阅读。
pojo对象
如果传入的是一个对象的话,那么情况就稍有不同了。除了传入类型需要是对象的类型(可以直接写类的全路径,也可以通过在sqlConfig.xml中配置别名的方式,配置类的别名)。还需要注意的是在sql语句的占位符上也需要将我们的内容对应我们的对象的属性值。代码如下:
<select id="findUserByUserName" parameterType="cn.itcast.pojo.User" resultType="cn.itcast.pojo.User">
select * from user where username like'%${username}%'
</select>
这里的username必须对应User类中的属性。也就是说,在User类中必须有username的属性。而且我们在传入参数的时候,需要将user对象的username赋值。用于被mybatis框架解析。
在sqlConfig.xml中配置别名的方法:
<!-- 自定义别名 --> <typeAliases> <!-- 给单个pojo起别名: type:pojo的全路径名称, alias:别名 --> <!-- <typeAlias type="cn.itcast.pojo.User" alias="user"/> --> <!-- 使用包扫描的方式将整个包下面的pojo起别名 别名就是类名, 不区分大小写, 建议按照java的命名规则来写 --> <package name="cn.itcast.pojo"/> </typeAliases>
pojo包装对象
如果传入对象是一个包含有另外一个对象的对象,也就是说传入对象是一个包装对象的时候,我们该怎么办呢?其实也差不多,就是将占位符或者连接符中的值改为对象.属性名具体代码如下:
首先是pojo对象的代码,我们可以看出,整个user对象都作为了queryVo对象的一个属性值了,其字段名称为user:
package cn.itcast.pojo;
public class QueryVo {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
然后是我们的映射文件,其中的${user.userneme}中,user和我们的QueryVo类中的user属性名称一致,而username对应的是User类中的username字段:
<select id="findUserByVo" parameterType="cn.itcast.pojo.QueryVo" resultType="cn.itcast.pojo.User">
select * from user where username like'%${user.username}%' and sex =#{user.sex}
</select>
输出映射
输出映射的配置和输入映射基本一致。首先是简单类型,mybatis中只有一种情况可以返回简单类型,那就是我们的sql语句返回值只有一条的时候。可以返回简单类型。
还有就是我们的pojo类型。我们的mybatis可以将返回的数据,封装成为一个pojo对象,但是,pojo的对象属性必须和我们的返回值的字段名一致。才可以封装进去。如果不一致仍然想封装,那么,就需要指定其对应关系。具体代码及注释如下:
<!-- 这里的userListResultMap对应的是resultMap的唯一标示符 -->
<select id="findUserByVo" parameterType="cn.itcast.pojo.QueryVo" resultMap="userListResultMap">
select * from user where username like'%${user.username}%' and sex =#{user.sex}
</select>
<!-- 这里的cn.itcast.pojo.User代表的是User类也就是最终生成对象的类型;userListResultMap是这个resultMap的唯一标示符 -->
<resultMap type="cn.itcast.pojo.User" id="userListResultMap">
<!-- 这里的id_是从数据库中查出的数据字段名称是主键;而id是我们的User对象中的属性 -->
<id column="id_" property="id"/>
<!-- 这里的result指的是其他字段 -->
<result column="userneme_" property="username"/>
</resultMap>
以上所述是小编给大家介绍的MyBatis输入映射和输出映射实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# mybatis
# 输入映射
# mybatis输出映射
# 映射
# Mybatis中如何使用sum对字段求和
# MyBatis一对一映射初识教程
# java 中MyBatis注解映射的实例详解
# MyBatis的SUM映射问题及解决
# 的是
# 类中
# 是一个
# 另外一个
# 小编
# 自己的
# 返回值
# 都是
# 也就是说
# 字段名
# 是在
# 都有
# 在此
# 是从
# 可以通过
# 要注意
# 给大家
# 才可以
# 可以直接
# 几种
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
高端网站建设与定制开发一站式解决方案 中企动力
如何在建站之星网店版论坛获取技术支持?
微信小程序 闭包写法详细介绍
微信小程序 require机制详解及实例代码
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
iOS中将个别页面强制横屏其他页面竖屏
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
Laravel集合Collection怎么用_Laravel集合常用函数详解
如何快速打造个性化非模板自助建站?
如何登录建站主机?访问步骤全解析
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
nginx修改上传文件大小限制的方法
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
Laravel如何使用模型观察者?(Observer代码示例)
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
详解Android中Activity的四大启动模式实验简述
BootStrap整体框架之基础布局组件
大型企业网站制作流程,做网站需要注册公司吗?
深圳网站制作的公司有哪些,dido官方网站?
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
创业网站制作流程,创业网站可靠吗?
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
Android Socket接口实现即时通讯实例代码
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
黑客如何利用漏洞与弱口令入侵网站服务器?
如何彻底删除建站之星生成的Banner?
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
移动端脚本框架Hammer.js
高端云建站费用究竟需要多少预算?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
如何快速生成ASP一键建站模板并优化安全性?
如何在IIS中新建站点并配置端口与IP地址?
js实现获取鼠标当前的位置
如何在局域网内绑定自建网站域名?
Android okhttputils现在进度显示实例代码
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Laravel怎么上传文件_Laravel图片上传及存储配置
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
python中快速进行多个字符替换的方法小结
详解MySQL数据库的安装与密码配置

