mybatis之resultType返回值
阿新 • • 發佈:2019-02-18
對於初學者來說,mybatis雖簡單,但是也不免粗心大意,讓一些小問題而費盡心思,那麼今天我們就來談談resultType中的返回值問題
- 當輸出結果只有一列時,可以使用ResultType指定簡單型別作為輸出結果型別。
這裡我們來一個簡單的程式測試
首先建立一個bean工具類,對應的在資料庫中把表建好,要形成一一對應。bean工具類的set和get方法自己注入。
public class User {
private int id;
private String username;
private String sex;
private Date birthday;
private String address;
public int getId() {
return id;
}
建立一個對映檔案UserMapper.xml
<?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的命名要有一定的規範,必須和我們的介面類路徑一致,要遵循mapper代理中的一些規範,如果不瞭解規範,可以上網搜一下-->
<mapper namespace="XXX.UserMapper">
<!-- 根據使用者ID,查詢使用者資訊 -->
<!--
[id]:statement的id,要求在名稱空間內唯一
[parameterType]:入參的java型別
[resultType]:查詢出的單條結果集對應的java型別
[#{}]: 表示一個佔位符?
[#{id}]:表示該佔位符待接收引數的名稱為id。
-->
<!-- public User findUserById(int id); yiqixie.User這條語句是一個典型的單條查詢,返回值只有一個物件,我們可以稱之為單查詢,這種返回值是最簡單的,所以這裡不加贅述-->
<select id="findUserById" parameterType="int" resultType="yiqixie.User">
SELECT * FROM USER WHERE id =#{id}
</select>
<!-- public List<User> findUsersByName(String username); yiqixie.User 那麼這條查詢語句返回的就是一個list集合了,因為你要用一個使用者名稱去查詢,有可能返回的是對個物件,或者你去查一些類似的東西,它返回給你的並不一定只有一條資料,所以,你就不得不考慮多個返回值型別,那麼我們應該怎麼寫返回值呢?不是這裡的返回值要和介面中的返回值型別一致嗎?我們在resultType中需要寫成list嗎?對於這個問題,我想我們大可不必這麼想,因為畢竟返回的物件還是一個User,只要我們在接收資料時給一個list集合收納它就可以了,也就是說,我們在返回值那麼依舊寫User物件就ok。-->
<select id="findUsersByName" parameterType="String" resultType="yiqixie.User">
select * from user where username like '%${value}%'
</select>
</mapper>
這裡我們還需要一個全域性配置檔案,把我們剛才定義的xml檔案注入到全域性檔案中,這樣程式才能正常的執行
<?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>
<properties resource="db.properties"></properties>
<environments default="development">
<environment id="development">
<!-- 配置JDBC事務控制,由mybatis進行管理 -->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
<!-- 載入mapper -->
<mappers>
<mapper resource="sqlmap/UserMapper.xml"/>
</mappers>
</configuration>
測試一下
@Test
public void testForResultType(){
SqlSession sqlSession=sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> list=mapper.findUsersByName("rose");
System.out.println(list);
}
結果: