Mybatis 40_resultMap基础和@Results注解

40_resultMap基础和@Results注解

  • resultType和resultMap
    • 元素
      • 项目0501resultMap
    • @Results注解
      • 项目0502resultMap注解(@Results)
    • 【总结】

resultType和resultMap

  • resultType指定结果集每条记录要映射的对象类型。
  • resultMap表明使用自定义的映射规则,resultMap属性值为一个元素的id属性值
      resultMap比指定resultType要稍微复杂一些,但它的功能更强大

元素

resultMap专门定义一个映射规则:完成结果集与Java对象之间的映射关系
必须指定如下属性:
- id:指定该的唯一标识。
- type:指定该映射的Java对象的类型。

的两个常用子元素:
元素映射标识属性列,映射普通列
它们都可指定以下属性:
- column:指定列名。
- property:指定对应的属性名。
- javaType:指定属性的Java类型。一般无需指定,MyBatis可以自动推断。
- jdbcType:指定该列的JDBC类型。一般无需指定,MyBatis可以自动推断。
- typeHandler:为该数据列与属性值之间的转换指定类型处理器。

项目0501resultMap


DOCTYPE mapper
	PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
	
<mapper namespace="org.itcheng.app.dao.NewsMapper">

	
	<insert id="saveNews">
		insert into news_inf values (null, #{title}, #{content})
	insert>
	
	
	<update id="updateNews">
		update news_inf set news_title = #{title}, news_content = #{content}
		where news_id=#{id}
	update>
	
	
	<delete id="deleteNews">
		delete from news_inf where news_id = #{xyz} 
	delete>
	
	
	<select id="findNews" resultMap="newsMap">
		select * from news_inf where news_id > #{id}		
	select>
	
	
	<resultMap type="news" id="newsMap" >
		<id column="news_id" property="id" />
		<result column="news_title" property="title"/>
		<result column="news_content" property="content"/>
	
	resultMap>
	
mapper>

@Results注解

元素对应于@Results注解
该注解的value属性可指定多个@Result注解
@Result相当于 的综合体,当它的id属性为true,代表元素。

项目0502resultMap注解(@Results)

package org.itcheng.app.dao;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.itcheng.app.domain.News;

// Mapper组件相当于DAO组件
public interface NewsMapper
{
	@Insert("insert into news_inf values (null, #{title}, #{content})")
	int saveNews(News news);
	
	@Update("update news_inf set news_title = #{title}, news_content = #{content}\r\n" + 
		"where news_id=#{id}")
	int updateNews(News news);
	
	@Delete("delete from news_inf where news_id = #{xyz}")
	void deleteNews(Integer id);
	
	@Select("select * from news_inf where news_id > #{id}")
	@Results({
		// id = "true"相当于子元素
		@Result(column = "news_id", property = "id", id = true),//表字段news_id对应news对象的 id属性
		@Result(column = "news_title", property = "title"),
		@Result(column = "news_content", property = "content")
	})
	List<News> findNews(Integer id);

}

【总结】

等同于@Results注解
等同于@Result注解

你可能感兴趣的:(mybatis,sql,数据库,eclipse,java)