Mybatis SQL语句映射文件的配置

resultMap
SQL映射文件是所有sql语句放置的地方。
-工作空间:一般是对应的接口类的路径
-实例:接口类路径com.xxxx.dao.xxxmapper.java
工作空间路径com.xxxx....dao.xxmapper.xml
-配置文件引用:<mapper sesource="配置文件的路径"/>
SQL映射XML文件的一些初级元素:
1.cache - 配置给定模式的缓存
2.cache-ref -从别的模式中引用一个缓存
3.resultMap - 描述如何从结果集中加载对象 *
4.sql - 一个可以被其他语句复用的SQL块
5.insert - 映射insert语句
6.update - 映射update语句
7.delete - 映射Delete语句
8.select - 映射Select语句
-resultMap :最重要且强大的元素,描述如何从结果集中加载对象
属性:type 为java实体类;id为此resultMap的标识
可以设置的映射:
1.constructor - 用来将结果反射给一个实例化好的类的构造器
idArg :ID参数,将结果集标记为ID,以方便全局调用
arg:反射到构造器的通常结果
2.id - ID结果,将结果集标记为ID,以方便全局调用
3.result - 反射到javaBean属性的普通结果
4.association - 复杂类型的结合;多个结果合成的类型
nested result mappings - 几resultMap自身嵌套关联,也可以引用到一个其它上
5.collection - 复杂类型集合
6.nested result mappings - resultMap的集合,也可以应用到一个其他上
7.discriminator - 使用一个结果值以决定使用那个resultMap
case-基本一些纸的结果映射的case情形
-id、result和asocition联合

id是主键映射,result其他基本数据库字段到实体类属性的映射

联合元素用来处理“一对一”的关系,需要制定映射的java实体类的属性,属性的javaType。对用的数据库表的列名称,如果想复写的话返回结果的值,需要指定typeHandler。

不同的情况需要告诉MyBatis如何加载一个联合:

             1.select:执行一个其他映射的SQL语句返回一个java实体类型。较灵活;

              2.resultMap:使用一个嵌套的结果映射来处理通过join查询结果集,映射成java实体类型

简单的例子

本例子中文章具有:id,栏目,标题,内容,发布时间,发布人,发布状态和文章来源的属性

且每篇文章有自己的栏目,通过栏目id进行关联,然后通过resultMap使用嵌套的结果映射来处理

实体类

    //使用注解,为表名指定别名,指定mapper文件 结果集和主键
    @GenTable(tableName="WEB_ARTICLE",alias="t_article",mapper=PracticeArticleMapper.class,
    columnList="articleColumns",resultMap="ArticleResultMap",
    primaryKeyProperty="id",orderEntityPrefix="article",
    selectCriteria="art_article")
public class Article implements Serializable{
    private static final String STATUS_TYPE_CODE = "article";
    private static final String SRC_DICT_CODE
    //通过注解,对应表中的列名,并为其指定别名,方便调用
    @GenColumn(columnName="id_",alias="t_art_id_")
	private String id;
	@GenColumn(columnName="title_",alias="t_art_title_")
	private String title;
	@GenColumn(columnName="publisher_",alias="t_art_publish_man_")
	private String publishMan;
	@GenColumn(columnName="publish_time_",alias="t_art_publish_time_")
	private Date publishTime;
	@GenColumn(columnName="content_",alias="t_art_content_")
	private String content;
	@GenAssociation(columnName="column_id_",alias="t_art_item_")
	private Column item;
	@GenAssociation(columnName="origin_",alias="t_art_src_")
	private DictData src;
	@GenAssociation(columnName="status_",alias = "t_art_status_")
	private DataStatus status;

    public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getPublishMan() {
		return publishMan;
	}
	public void setPublishMan(String publishMan) {
		this.publishMan = publishMan;
	}
	public Date getPublishTime() {
		return publishTime;
	}
	public void setPublishTime(Date publishTime) {
		this.publishTime = publishTime;
	}
	public String getPublishTimeStr(){
		if(publishTime==null)
			return StringUtils.EMPTY;
		else
			return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(publishTime);
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	
	public Column getItem() {
		return item;
	}
	public void setItem(Column item) {
		this.item = item;
	}
	public DictData getSrc() {
		return src;
	}
	public void setSrc(DictData src) {
		this.src = src;
	}
	public DataStatus getStatus() {
		return status;
	}
	public void setStatus(DataStatus status) {
		this.status = status;
	}
}

    @GenTable(tableName="WEB_Column",alias="t_column",mapper=ColumnMapper.class,
    columnList="columnColumns",resultMap="ColumnResultMap",
    primaryKeyProperty="id",orderEntityPrefix="column",
    selectCriteria="art_article")
public class Column impelements Serializable{
    @GenColumn(columnName="id_",alias="t_column_id_")
    private String id;
    @GenColumn(columnName="name_",alias="t_column_name_")
    private String name;
    @GenColumn(columnName="order_",alias="t_column_order_")
    private Integer order;
}

mapper.xml

    
    
	
     
     
	
     
     
		
      
      
		
      
      
		
      
      
		
      
      
		
      
      
		
      
      
		
      
      
		
      
      
	
     
     
    
    




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值