1. 程式人生 > >mybatis之resultType返回值

mybatis之resultType返回值

對於初學者來說,mybatis雖簡單,但是也不免粗心大意,讓一些小問題而費盡心思,那麼今天我們就來談談resultType中的返回值問題

  1. 當輸出結果只有一列時,可以使用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);

    }

結果:
這裡寫圖片描述