本文主要是介绍mybatis中xml文件容易搞混的属性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 第一章、
- 1.1)MyBatis中resultMap标签
- 1.2)MyBatis的resultType
- 1.3)MyBatis的parameterType
- 1.4)type属性
- 1.5)javaType属性
友情提醒:
先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。
第一章、
1.1)MyBatis中resultMap标签
resultType和resultMap是不能同时存在的
介绍:在MyBatis当中,查询结果集被封装为Java对象,可以通过resultType,也可以通过resultMap,在resultMap当中描述了数据库表的列与Java对象的属性之间的对应关系。在映射关系中,还可以通过resultMap的typeHandler设置实现查询结果值的类型转换。ResultMap不仅可以解决简单的列与属性的映射问题,还可以处理复杂的查询结果,比如联合查询、子查询等。对于这些复杂的查询结果,可以在ResultMap中使用子元素来处理,比如<collection>元素用于处理一对多、一对一的关系,<association>元素用于处理与关联对象的关系。
作用:用于将数据库查询的结果映射到Java对象。ResultMap的主要目的是解决数据库复杂查询和Java对象之间的映射问题。
<resultMap id="userResult" type="com.example.User"> <result property="id" column="id"/> <result property="name" column="name"/> <result property="email" column="email"/>
</resultMap>
1.2)MyBatis的resultType
resultType和resultMap是不能同时存在的
resultType用来指定查询结果集封装的数据类型,当一个select语句查询之后得到结果集,可以使用 resultType 属性来指定查询结果应映射到的 Java 类型。结果集的列名需要和java实体类的属性名一致,不一致的可以使用as关键字给列起别名。
例如:返回值为int,resultType为int ,java.lang.Integer也可以
<mapper namespace="com.xx.xx.dao.UserMapper"><!-- 返回值为int,resultType为int ,java.lang.Integer也可以--><select id="countUser" resultType="int">select count(*) from user</select>
</mapper>
例如,假设你有一个名为 User 的 Java 类,其中包含 id、name 和 age 等属性。你可以在 MyBatis 的 XML 映射文件中编写以下查询语句:
<select id="getUser" resultType="com.example.User"> SELECT id, name, age FROM users WHERE id = #{id}
</select>
在上面的示例中,resultType 属性被设置为 com.example.User,这意味着查询结果的一行记录数据将被映射到resultType指定类型的对象 User 类。查询结果中的每一行数据将自动填充到 User 对象中,其中 id 列映射到 User 类的 id 属性,name 列映射到 User 类的 name 属性,以此类推。
1.3)MyBatis的parameterType
指定输入参数类型,mybatis通过parameterType属性用来指定参数类型,parameterType属性是专门用来给sql语句占位符#{}传值的,底层原理使用了反射机制,#{}的大括号当中需要提供实体类的属性名,底层使用属性名拼接get方法来获取属性值,将属性值传递给sql语句。parameterType传输单个简单类型值,${}括号中只能是value。从输入对象中获取参数值拼接在sql中。
这个属性在<insert>、<update>、<delete>和<select>等映射标签中都有使用。通过指定parameterType属性,MyBatis可以获取到输入参数的值,并将其转换为对应的类型后传递给SQL语句执行。
例如,在如下示例中,我们将一个User对象插入到数据库中:
<insert id="insertUser" parameterType="com.example.User"> INSERT INTO user(username, password) VALUES(#{username}, #{password})
</insert>
在这个例子中,parameterType属性指定了输入参数的类型为com.example.User,这意味着我们在执行插入语句时,需要传递一个User对象作为输入参数。MyBatis会根据User类中的属性,将数据库中的值映射到User对象中对应的属性。
除了使用类类型作为parameterType属性的值之外,还可以使用别名来指定输入参数的类型。例如,可以使用#{String}来指定输入参数为字符串类型。在实际开发中,需要根据具体的业务需求来选择合适的类型,并且正确地配置parameterType属性。
1.4)type属性
MyBatis中的type属性一般用在两种不同的地方:
当我们在mapper.xml中定义SQL语句时,type属性通常用来指定SQL语句的类型,比如select、insert、update、delete等。
例如:
<insert id="insertUser" parameterType="com.example.User" type="INSERT"> INSERT INTO user(username, password) VALUES(#{username}, #{password})
</insert>
1.5)javaType属性
这篇关于mybatis中xml文件容易搞混的属性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!