1. 程式人生 > 實用技巧 >輸出引數resultType

輸出引數resultType

1.簡單型別(八個基本型別+String)

/MyBatisProject3/src/org/myy/mapper/studentMapper.xml

<select id="queryStudentCount" resultType="int">
    select count(1) from student1
</select>

/MyBatisProject3/src/org/myy/mapper/StudentMapper.java

int queryStudentCount();

/MyBatisProject3/src/org/myy/test/Test.java

//Connection - SqlSession操作Mybatis
//conf.xml->reader Reader reader = Resources.getResourceAsReader("conf.xml"); //reader->sqlSession //可以通過build的第二引數 指定資料庫環境 SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader,"development"); SqlSession session = sessionFactory.openSession(); StudentMapper studentMapper
= session.getMapper(StudentMapper.class); int count=studentMapper.queryStudentCount(); System.out.println(count); session.close();

2.輸出引數為實體物件型別

/MyBatisProject3/src/org/myy/mapper/studentMapper.xml

<select id="queryStuByStuno" parameterType="int" resultType="student">
    select * from student1 where stuno=${value}
</select>

/MyBatisProject3/src/org/myy/mapper/StudentMapper.java

Student queryStuByStuno(int stuno);

/MyBatisProject3/src/org/myy/test/Test.java

//Connection - SqlSession操作Mybatis
//conf.xml->reader
Reader reader = Resources.getResourceAsReader("conf.xml");
//reader->sqlSession
//可以通過build的第二引數 指定資料庫環境
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader,"development");
SqlSession session = sessionFactory.openSession();
                                
                                
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
                        
Student student=studentMapper.queryStuByStuno(1);
System.out.println(student);
session.close();

3.輸出引數為實體物件型別的集合:雖然輸出型別為集合,但是resultType依然寫集合的元素型別()

/MyBatisProject3/src/org/myy/mapper/studentMapper.xml

<select id="queryAllStudent" resultType="student">
    select * from student1
</select>

/MyBatisProject3/src/org/myy/mapper/StudentMapper.java

List<Student> queryAllStudent();

/MyBatisProject3/src/org/myy/test/Test.java

// Connection - SqlSession操作Mybatis
// conf.xml->reader
Reader reader = Resources.getResourceAsReader("conf.xml");
// reader->sqlSession
// 可以通過build的第二引數 指定資料庫環境
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader, "development");
SqlSession session = sessionFactory.openSession();

StudentMapper studentMapper = session.getMapper(StudentMapper.class);
List<Student> students = studentMapper.queryAllStudent();
System.out.println(students);
session.close();

4.輸出引數型別為HashMap

Hashmap本身是一個集合,但是可以存放多個元素

  但是根據提示發現,返回值為Hashmap時,查詢的結果只能是一個學生(no,name)

->結論:一個HashMap對應一個學生的多個元素(多個屬性)

/MyBatisProject3/src/org/myy/mapper/studentMapper.xml

<select id="queryAllStudentOutByHashMap" resultType="HashMap">
    select stuno "no",stuname "name" from student1
</select>

/MyBatisProject3/src/org/myy/mapper/StudentMapper.java

List<HashMap<String, Object>> queryAllStudentOutByHashMap();

/MyBatisProject3/src/org/myy/test/Test.java

// Connection - SqlSession操作Mybatis
// conf.xml->reader
Reader reader = Resources.getResourceAsReader("conf.xml");
// reader->sqlSession
// 可以通過build的第二引數 指定資料庫環境
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader, "development");
SqlSession session = sessionFactory.openSession();

StudentMapper studentMapper = session.getMapper(StudentMapper.class);

List<HashMap<String, Object>> studentMap = studentMapper.queryAllStudentOutByHashMap();
System.out.println(studentMap);
session.close();

resultType:一般情況下

resultMap:實體類的屬性、資料表的欄位:型別、名字不同時

當屬性名和欄位名不一致時,除了使用resultMap以外,還可以使用resultType+HashMap

a.result

/MyBatisProject3/src/org/myy/mapper/studentMapper.xml

<select id="qureyStudentById"  parameterType="int" resultMap="qureyStudentByIdMap">
        select id,name from student1 where id=#{id}
</select>
<resultMap type="student" id="qureyStudentByIdMap">
    <!--指定類中的屬性和表中的欄位對應關係  -->
    <id property="stuNo" column="id"/>
    <result property="stuName" column="name"/>
</resultMap>

/MyBatisProject3/src/org/myy/mapper/StudentMapper.java

    Student qureyStudentById(int stuno);

/MyBatisProject3/src/org/myy/test/Test.java

// Connection - SqlSession操作Mybatis
// conf.xml->reader
Reader reader = Resources.getResourceAsReader("conf.xml");
// reader->sqlSession
// 可以通過build的第二引數 指定資料庫環境
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader, "development");
SqlSession session = sessionFactory.openSession();
StudentMapper studentMapper
= session.getMapper(StudentMapper.class); Student student = studentMapper.qureyStudentById(1); System.out.println(student); session.close();

b.resultType+HashMap

/MyBatisProject3/src/org/myy/mapper/studentMapper.xml

<select id="qureyStudentByIdWithHashMap"  parameterType="int" resultType="HashMap">
        select id "stuNo",name "stuName" from student1 where id=#{id}
</select>

/MyBatisProject3/src/org/myy/mapper/StudentMapper.java

Student qureyStudentByIdWithHashMap(int stuno);

/MyBatisProject3/src/org/myy/test/Test.java

// Connection - SqlSession操作Mybatis
// conf.xml->reader
Reader reader = Resources.getResourceAsReader("conf.xml");
// reader->sqlSession
// 可以通過build的第二引數 指定資料庫環境
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader, "development");
SqlSession session = sessionFactory.openSession();

StudentMapper studentMapper = session.getMapper(StudentMapper.class);

Student student = studentMapper.qureyStudentByIdWithHashMap(1);
System.out.println(student);
session.close();

注意:如果n個欄位,發現其中某一個欄位始終為預設值,則可能是表的欄位和類的屬性名字寫錯。