1. 程式人生 > >MyBatis學習(二)

MyBatis學習(二)

唯一標識 erl int exception pojo color turn rop session

一、輸入輸出映射

1、輸入類型parameterType

1.1 傳遞基本類型

1.2 傳遞POJO對象

使用ONGL表達式解析對象字段的值,#{}或者${}中的值為POJO屬性的名稱 user.username

1.3 傳遞POJO包裝對象QueryVo

查詢條件是多個查詢條件的綜合

1.3.1 QueryVo

public class QueryVo {

    private User user;

    public User getUser() {
        returnuser;
    }

    publicvoid setUser(User user) {
        
this.user = user; } }

1.3.2 UserMapper.xml

<!-- 使用包裝類型查詢用戶 使用ognl從對象中取屬性值,如果是包裝對象可以使用.操作符來取內容部的屬性
    -->
    <select id="findUserByQueryVo" parameterType="com.guojie.pojo.QueryVo" resultType="user">
        SELECT * FROM user where username like ‘%${user.username}%‘ and sex=#{user.sex}
    
</select>

1.3.3 UserMapper接口中

public List<User> findUserByQueryVo(QueryVo vo);

1.3.4 測試

@Test
public void testFindUserByQueryVo() throws Exception {
     SqlSession sqlSession = sessionFactory.openSession();
     //獲得mapper的代理對象,通過getMapper方法實例化接口
     UserMapper userMapper = sqlSession.getMapper(UserMapper.class
);
//創建QueryVo對象 QueryVo queryVo = new QueryVo(); //創建user對象 User user = new User(); user.setUsername("劉"); user.setSex("1"); queryVo.setUser(user);
//根據queryvo查詢用戶 List<User> list = userMapper.findUserByQueryVo(queryVo); System.out.println(list); sqlSession.close();
}

2、輸出類型resultType

2.1 輸出基本類型

2.1.1 UserMapper.xml

<!-- 獲取用戶列表總數 -->
    <select id="findUserCount" resultType="int">
       select count(*) from user
    </select>

2.1.2 UserMapper接口

public int findUserCount() throws Exception;

2.1.3 測試

Public void testFindUserCount() throws Exception{
    //獲取session
    SqlSession session = sqlSessionFactory.openSession();
    //獲取mapper接口實例
    UserMapper userMapper = session.getMapper(UserMapper.class);

    int count = userMapper.findUserCount();
        
    //關閉session
    session.close();
}

2.2 輸出POJO對象

2.3 輸出POJO列表

3、resultMap(用List可取代)

resultType需要POJO屬性和sql查詢的列名一致才能將查詢結果映射為POJO

resultMap在POJO屬性和sql查詢的列名不一致時也行,可用於映射復雜類型的POJO

<select id="selectOrderList" resultMap="orders">
     select user_id, user_name from user
</select>
<resultMap type="Orders"  id="orders">
     <result column="user_id" property="userId">
</resultMap>

id:結果集的唯一標識

property:POJO類的屬性

column:sql字段

二、動態sql

通過MyBatis提供的各種標簽方法實現動態拼接sql

POJO:不按MVC分層,只有JavaBean的一些屬性和setter&getter

Domain:不按MVC分層,只有JavaBean的一些屬性和setter&getter

PO:用於持久層,在增加或者修改的時候,從頁面直接傳入action中,其中JavaBean類名等於表名,屬性名等於字段名,還有對應的setter&getter

VO:View Object表現層對象,主要用於在高級查詢中從頁面接收傳過來的各種條件參數,好處是擴展性強

BO:在Service,現在基本不用

MyBatis學習(二)