mybatis映射文件中的主要元素及其作用
时间: 2023-12-03 12:25:15 浏览: 37
Mybatis映射文件中的主要元素包括:
1. select:用于定义查询操作;
2. insert:用于定义插入操作;
3. update:用于定义更新操作;
4. delete:用于定义删除操作;
5. resultMap:用于将查询结果映射到对象上;
6. parameterMap:用于将查询参数映射到对象上;
7. sql:用于定义一个可重用的sql片段;
8. include:用于引入其他的xml片段;
9. selectKey:用于定义主键生成策略;
10. resultType:用于指定返回结果的类型。
它们分别用于定义不同的SQL操作,可以帮助开发者很方便地实现ORM功能。
相关问题
MyBatis的Mapper映射文件的语法及其常见元素属性的配置和使用
MyBatis的Mapper映射文件是用于定义SQL语句和映射关系的XML文件,其中包含了许多常用的元素和属性,以下是Mapper映射文件的语法及其常见元素属性的配置和使用:
1. 定义Mapper命名空间
```xml
<mapper namespace="com.example.mapper.UserMapper">
```
用于定义Mapper接口的命名空间,指定了Mapper接口的完全限定名。
2. 定义查询语句
```xml
<select id="getUserById" parameterType="int" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
```
- `id`:用于指定查询语句的唯一标识符。
- `parameterType`:用于指定查询语句的参数类型。
- `resultType`:用于指定查询语句的返回值类型。
3. 定义插入语句
```xml
<insert id="insertUser" parameterType="com.example.entity.User" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user(name, age) VALUES (#{name}, #{age})
</insert>
```
- `useGeneratedKeys`:用于指定是否返回自动生成的主键。
- `keyProperty`:用于指定返回的主键值要设置到哪个属性中。
4. 定义更新语句
```xml
<update id="updateUser" parameterType="com.example.entity.User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
```
5. 定义删除语句
```xml
<delete id="deleteUserById" parameterType="int">
DELETE FROM user WHERE id = #{id}
</delete>
```
6. 定义结果集映射
```xml
<resultMap id="userMap" type="com.example.entity.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
</resultMap>
```
- `id`:用于指定结果集映射的唯一标识符。
- `type`:用于指定结果集映射的Java类型。
- `<id>`:用于指定主键字段的映射关系。
- `<result>`:用于指定普通字段的映射关系。
7. 使用参数
```xml
<select id="getUserByName" parameterType="java.lang.String" resultType="com.example.entity.User">
SELECT * FROM user WHERE name = #{name} AND age = #{age}
</select>
```
在SQL语句中使用`#{}`占位符来表示参数,参数名可以和JavaBean的属性名相同。
8. 使用动态SQL语句
```xml
<select id="getUserList" parameterType="com.example.entity.User" resultMap="userMap">
SELECT * FROM user
<where>
<if test="name != null and name != ''">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
```
在SQL语句中使用`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<where>`、`<foreach>`等标签来动态生成SQL语句。
以上是Mapper映射文件的常见元素属性的配置和使用,通过这些元素和属性,我们可以自由地编写和组合SQL语句,实现各种复杂的数据访问操作。
2、已知商品和种类 pojo 类的代码如下: public class Product { private int id ; private String name ; private float price ; private Category category ; public class Category { private int cid ; private String cname ; 商品表和种类表中的表名及列名和 pojo 类的类名及属性名完全一致,要求: (1)在 mybatis 映射文件中,使用< resultMap >元素进行关联映射。 (2)只写 mybatis 映射文件中的< mapper >、< resultMap >元素及< select >元素内容。 当前编程语言为: JAVA
<mapper namespace="com.example.ProductMapper">
<resultMap id="productMap" type="com.example.Product">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="price" column="price"/>
<association property="category" javaType="com.example.Product.Category">
<id property="cid" column="cid"/>
<result property="cname" column="cname"/>
</association>
</resultMap>
<select id="selectProductById" resultMap="productMap">
SELECT p.*, c.cid, c.cname
FROM product p
INNER JOIN category c ON p.cid = c.cid
WHERE p.id = #{id}
</select>
</mapper>
注意:以上代码仅供参考,具体的表名和列名需要根据实际情况修改。同时,在使用关联映射时,需要保证 pojo 类之间的属性名和类型与映射文件中的一致。