什么是 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中,代码如下:
1
2
3
|
<select id= "findUserById" parameterType= "int" resultType= "cn.itcast.pojo.User" >
SELECT * FROM user where id=#{id}
</select>
|
其中的sql语句内的占位符或者拼接符中的内容可以随意书写,没有实际意义。不过建议最好见名知意。以便于阅读。
pojo对象
如果传入的是一个对象的话,那么情况就稍有不同了。除了传入类型需要是对象的类型(可以直接写类的全路径,也可以通过在sqlConfig.xml中配置别名的方式,配置类的别名)。还需要注意的是在sql语句的占位符上也需要将我们的内容对应我们的对象的属性值。代码如下:
1
2
3
|
<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中配置别名的方法:
1
2
3
4
5
6
7
8
9
|
<!-- 自定义别名 -->
<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:
1
2
3
4
5
6
7
8
9
10
|
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字段:
1
2
3
|
<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的对象属性必须和我们的返回值的字段名一致。才可以封装进去。如果不一致仍然想封装,那么,就需要指定其对应关系。具体代码及注释如下:
1
2
3
4
5
6
7
8
9
10
11
|
<!-- 这里的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输入映射和输出映射实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对快网idc网站的支持!
原文链接:http://www.cnblogs.com/liyasong/archive/2017/02/14/mybatis_ys.html
相关文章
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-05-27 79
-
IOS计步器功能实现之Healthkit和CMPedometer
2025-05-29 37 -
2025-05-25 50
-
详解Intellij IDEA中.properties文件中文显示乱码问题的解决
2025-05-29 102 -
2025-05-27 92