簡體   English   中英

Mybatis映射以進行選擇*查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM