Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java select*查询的Mybatis映射_Java_Mybatis_Mapper - Fatal编程技术网

Java select*查询的Mybatis映射

Java select*查询的Mybatis映射,java,mybatis,mapper,Java,Mybatis,Mapper,我试图为select*查询编写mybatis映射程序,该查询将从ProcessType表中返回一个行列表。并且每一行都必须映射到一个ProcessType pojo。我知道如何将一行映射到POJO,但是对于进程类型的列表,如何实现这一点呢 波乔--> 类名:ProcessType 属性: 字符串ABC; 字符串id; 字符串日期 从mapper中,我调用一个proc'XYZ',它返回被查询的ProcessType表的行列表的游标。我对这个问题一点也不了解。Primary,我认为这个简单的操作不需

我试图为select*查询编写mybatis映射程序,该查询将从ProcessType表中返回一个行列表。并且每一行都必须映射到一个ProcessType pojo。我知道如何将一行映射到POJO,但是对于进程类型的列表,如何实现这一点呢

波乔--> 类名:ProcessType 属性:
字符串ABC; 字符串id; 字符串日期


从mapper中,我调用一个proc'XYZ',它返回被查询的ProcessType表的行列表的游标。

我对这个问题一点也不了解。Primary,我认为这个简单的操作不需要一个过程,我会把它当作一个简单的查询

所以,如果你有这个实体

    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)
);
<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>
<select id="getProcessTypes" resultMap="processTypeMap">
    select * from ProcessType
</select>
使用注释的映射器应如下所示:

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();

}
公共接口MapperProcessType{
@选择(“从流程类型中选择*)
@结果({
@结果(property=“ABC”,column=“ABC”),
@结果(property=“id”,column=“id”),
@结果(property=“date”,column=“date”)
})
公共列表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>

从进程类型中选择*

这个问题我一点也不懂。Primary,我认为这个简单的操作不需要一个过程,我会把它当作一个简单的查询

所以,如果你有这个实体

    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)
);
<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>
<select id="getProcessTypes" resultMap="processTypeMap">
    select * from ProcessType
</select>
使用注释的映射器应如下所示:

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();

}
公共接口MapperProcessType{
@选择(“从流程类型中选择*)
@结果({
@结果(property=“ABC”,column=“ABC”),
@结果(property=“id”,column=“id”),
@结果(property=“date”,column=“date”)
})
公共列表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();
列出getProcessTypes();
您的Mapper.xml应使用该类作为结果类型:

<select id="getProcessTypes" resultType="path.to.ProcessType">


或者,您可以创建一个结果映射,将列映射到ProcessType属性,但这超出了这个问题的范围。

您的Mapper.java类只需要返回一个列表:

List<ProcessType> getProcessTypes();
列出getProcessTypes();
您的Mapper.xml应使用该类作为结果类型:

<select id="getProcessTypes" resultType="path.to.ProcessType">


或者您可以创建一个结果映射以将列映射到ProcessType属性,但这超出了此问题的范围。

如果我理解正确,您是否在结果映射中使用集合?这让mybatis期待一份清单

<collect property="" column="">

如果我理解正确,您是否在结果图中使用集合?这让mybatis期待一份清单

<collect property="" column="">

您只需定义一个
resultMap
,如下所示:

create table PROCESS_TYPE (
   ABC VARCHAR(200),
   ID  VARCHAR(200),
   DATE VARCHAR(200)
);
<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>
<select id="getProcessTypes" resultMap="processTypeMap">
    select * from ProcessType
</select>
现在,表中的列将相应地映射

我假设您希望获得
ProcessType
的列表,因此在
DAO
层中,您必须使用
selectList
方法

List<ProcessType> processTypes = sqlSessionTemplate.selectList("getProcessTypes")
List processTypes=sqlSessionTemplate.selectList(“getProcessTypes”)

您只需定义一个
resultMap
,如下所示:

create table PROCESS_TYPE (
   ABC VARCHAR(200),
   ID  VARCHAR(200),
   DATE VARCHAR(200)
);
<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>
<select id="getProcessTypes" resultMap="processTypeMap">
    select * from ProcessType
</select>
现在,表中的列将相应地映射

我假设您希望获得
ProcessType
的列表,因此在
DAO
层中,您必须使用
selectList
方法

List<ProcessType> processTypes = sqlSessionTemplate.selectList("getProcessTypes")
List processTypes=sqlSessionTemplate.selectList(“getProcessTypes”)

假设您使用了mybatis javaModelGenerator、sqlMapGenerator和javaClientGenerator,那么您需要做的就是在mapper类中使用
.selectByExample()
函数,并输入一个“空”示例对象,例如:

for (MyTable myTable : myTableMapper.selectByExample(new MyTableExample())) {
    System.out.println("found ID: " + myTable.getId());
}

这相当于一个select*

假设您使用了mybatis javaModelGenerator、sqlMapGenerator和javaClientGenerator,那么您需要做的就是在mapper类中使用
.selectByExample()
函数,并输入一个“空”示例对象,例如:

for (MyTable myTable : myTableMapper.selectByExample(new MyTableExample())) {
    System.out.println("found ID: " + myTable.getId());
}

这相当于一个select*

是否会隐式映射所有行?mybatis如何知道sql查询中的数据是ProcessType行的列表?它如何映射ProcessType对象的列表?它知道是ProcessType的列表,因为它是方法的返回。此外,您通过注释@Results映射属性,您说属性'ABC'是列'ABC'等等。MyBatis地图是如何绘制的?有了您授予它反射访问权限的信息,MyBatis就知道如何映射它。这会隐式映射所有行吗?mybatis如何知道sql查询中的数据是ProcessType行的列表?它如何映射ProcessType对象的列表?它知道是ProcessType的列表,因为它是方法的返回。此外,您通过注释@Results映射属性,您说属性'ABC'是列'ABC'等等。MyBatis地图是如何绘制的?有了您授予它反射式访问权限的信息,MyBatis就知道如何映射它了。这种结果映射能够隐式映射ProcessType表的所有行吗?mybatis如何知道sql查询中的数据是ProcessType行的列表?然后,它将如何单独映射每个processType对象呢?接口方法签名告诉它需要一个列表。如果只返回ProcessType,而查询返回了多个,则会出现“预期结果为1,但得到N个数字或结果”错误。这种结果映射是否能够隐式映射ProcessType表的所有行?mybatis如何知道sql查询中的数据是ProcessType行的列表?然后,它将如何单独映射每个processType对象呢?接口方法签名告诉它需要一个列表。如果只返回ProcessType,而查询返回多个,则会得到一个“预期的1 re”