MyBatis에서 resultType과 resultMap의 차이점에 대한 소개
7684 단어 mybatisresulttyperesultmap
MyBatis가 조회 맵을 할 때 사실 조회된 모든 속성은 대응하는 맵에 놓여 있는데 그 중에서 키는 속성 이름이고 값은 대응하는 값이다.
① 반환 형식 속성이resultType일 때 MyBatis는 맵의 키 값을 resultType에서 지정한 대상에 대응하는 속성으로 추출합니다.그래서 사실 MyBatis의 모든 조회에 비치는 반환 형식은 ResultMap입니다. 단지 제공된 반환 형식 속성이resultType일 때 MyBatis는 자동으로 대응하는 값을resultType에 지정한 대상의 속성에 부여합니다.
② 제공된 반환 유형이resultMap일 때 맵이 영역 모델을 잘 나타내지 못하기 때문에 스스로 대응하는 대상으로 전환해야 한다. 이것은 복잡한 조회에서 매우 작용한다.
다음은 두 가지 사용 차이에 대한 예입니다.
package com.clark.model;
import java.util.Date;
public class Goods {
private Integer id;
private Integer cateId;
private String name;
private double price;
private String description;
private Integer orderNo;
private Date updateTime;
public Goods(){
}
public Goods(Integer id, Integer cateId, String name, double price,
String description, Integer orderNo, Date updateTime) {
super();
this.id = id;
this.cateId = cateId;
this.name = name;
this.price = price;
this.description = description;
this.orderNo = orderNo;
this.updateTime = updateTime;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getCateId() {
return cateId;
}
public void setCateId(Integer cateId) {
this.cateId = cateId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getOrderNo() {
return orderNo;
}
public void setOrderNo(Integer orderNo) {
this.orderNo = orderNo;
}
public Date getTimeStamp() {
return updateTime;
}
public void setTimeStamp(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "[goods include:Id="+this.getId()+",name="+this.getName()+
",orderNo="+this.getOrderNo()+",cateId="+this.getCateId()+
",updateTime="+this.getTimeStamp()+"]";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<!-- give a alias for model -->
<typeAlias alias="goods" type="com.clark.model.Goods"></typeAlias>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@172.30.0.125:1521:oradb01" />
<property name="username" value="settlement" />
<property name="password" value="settlement" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/clark/model/goodsMapper.xml" />
</mappers>
</configuration></span>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="clark">
<resultMap type="com.clark.model.Goods" id="t_good">
<id column="id" property="id"/>
<result column="cate_id" property="cateId"/>
<result column="name" property="name"/>
<result column="price" property="price"/>
<result column="description" property="description"/>
<result column="order_no" property="orderNo"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<!--resultMap resultType -->
<select id="selectGoodById" parameterType="int" resultType="goods">
select id,cate_id,name,price,description,order_no,update_time
from goods where id = #{id}
</select>
<select id="selectAllGoods" resultMap="t_good">
select id,cate_id,name,price,description,order_no,update_time from goods
</select>
<insert id="insertGood" parameterType="goods">
insert into goods(id,cate_id,name,price,description,order_no,update_time)
values(#{id},#{cateId},#{name},#{price},#{description},#{orderNo},#{updateTime})
</insert>
</mapper>
package com.clark.mybatis;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.clark.model.Goods;
public class TestGoods {
public static void main(String[] args) {
String resource = "configuration.xml";
try {
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sessionFactory.openSession();</span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>// resultType
Goods goods = (Goods)session.selectOne("clark.selectGoodById", 4);
System.out.println(goods.toString());</span>
[html] view plain copy CODE
<span style="font-size:18px;"><span style="white-space:pre"> </span>// resultMap
List<Goods> gs = session.selectList("clark.selectAllGoods");
for (Goods goods2 : gs) {
System.out.println(goods2.toString());
}
// Goods goods = new Goods(4, 12, "clark", 12.30, "test is ok", 5, new Date());
// session.insert("clark.insertGood", goods);
// session.commit();
} catch (IOException e) {
e.printStackTrace();
}
}
}
결과 출력:
<span style="color:#cc0000;">[goods include:Id=4,name=clark,orderNo=null,cateId=null,updateTime=null]--- resultType </span>
<span style="color:#33ff33;">------- resultMap -----------------</span>
위에서 말한 것은 편집자가 여러분께 소개한 My Batis에서result Type과result Map의 차이점에 대한 소개입니다. 여러분께 도움이 되었으면 합니다. 궁금한 점이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 답장을 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.