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联合
mapper.xml
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