[英]Mybatis mapping for select * query
我試圖為select *查詢編寫mybatis映射器,這將向我返回ProcessType表中的行列表。 而且每一行都必須映射到ProcessType pojo。 我知道如何將單行映射到POJO,但是如何處理“進程類型”列表呢?
POJO->類名:ProcessType屬性:
字符串ABC; 字符串ID; 字符串日期;
從映射器中,我調用一個過程“ XYZ”,該過程將向我返回要查詢的ProcessType表的行列表的光標。
我完全不理解這個問題。 主要的,我認為不需要此簡單操作的過程,我將其作為簡單查詢來進行。
所以,如果您有這個實體。
public class ProcessType {
String ABC, id, Date;
public ProcessType(String aBC, String id, String date) {
ABC = aBC;
this.id = id;
Date = date;
}
public String getABC() {
return ABC;
}
public void setABC(String aBC) {
ABC = aBC;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDate() {
return Date;
}
public void setDate(String date) {
Date = date;
}
}
和一個表ProcessType像這樣:
create table PROCESS_TYPE (
ABC VARCHAR(200),
ID VARCHAR(200),
DATE VARCHAR(200)
);
使用注釋的映射器應如下所示:
public interface MapperProcessType {
@Select("select * from PROCESS_TYPE")
@Results({
@Result(property = "ABC", column = "ABC"),
@Result(property = "id", column = "ID"),
@Result(property = "date", column = "DATE")
})
public List<ProcessType> findAll();
}
另一方面,使用xml如下:
<resultMap id = "result" type = "ProcessType">
<result property = "ABC" column = "ABC"/>
<result property = "id" column = "ID"/>
<result property = "date" column = "DATE"/>
</resultMap>
<select id = "findAll" resultMap = "result">
SELECT * FROM PROCESS_TYPE
</select>
您的Mapper.java類只需要返回一個列表:
List<ProcessType> getProcessTypes();
您的Mapper.xml應該使用該類作為resultType:
<select id="getProcessTypes" resultType="path.to.ProcessType">
或者,您可以創建結果映射以將列映射到ProcessType屬性,但這不在此問題的范圍內。
假設您已經使用了mybatis javaModelGenerator,sqlMapGenerator和javaClientGenerator,那么您要做的就是在mapper類中使用.selectByExample()
函數,並輸入“空”示例對象,例如:
for (MyTable myTable : myTableMapper.selectByExample(new MyTableExample())) {
System.out.println("found ID: " + myTable.getId());
}
這相當於選擇*
如果我理解正確,那么您是否在結果圖中使用了集合? 這告訴mybatis需要一個列表。
<collect property="" column="">
您需要做的就是定義一個resultMap
如下所示:
<resultMap id="processTypeMap" type="yourpackage.ProcessType">
<id property="id" column="id_in_db"/>
<result property="abc" column="abc_in_db"/>
<result property="date" column="date_in_db"/>
</resultMap>
該column
是表映射中的關聯字段。
然后像上面定義的那樣設置resultMap
:
<select id="getProcessTypes" resultMap="processTypeMap">
select * from ProcessType
</select>
現在,表中的列將進行相應的映射。
我想您要獲取ProcessType
的列表,因此在DAO
層中,必須使用selectList
方法。
List<ProcessType> processTypes = sqlSessionTemplate.selectList("getProcessTypes")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.