12_複雜查詢01_Mapper代理實現

來源:互聯網
上載者:User

標籤:

【工程】

 

【代碼實現】

【user.java】

package com.Higgin.Mybatis.po;import java.util.Date;public class User {    //屬性名稱和資料庫表欄位對應        private int id;        private String username;        private String sex;        private Date birthday;        private String address;    //對應的get、set方法}    

 

【UserCustom.java】

package com.Higgin.Mybatis.po;/*可以用於擴充使用者的資訊*/public class UserCustom extends User{      //如果需要可以在這裡增加拓展的具體資訊              }

 

【UserQueryVo.java】

package com.Higgin.Mybatis.po;/** * 需求: *    完成使用者資訊的總和查詢,需要傳入查詢條件很複雜(可能還包括使用者資訊、其他資訊、比如商品、訂單等) * 針對上述需求,建議使用自訂的封裝類型的pojo * 在封裝類中將複雜的查詢條件封裝進去 */public class UserQueryVo {    //在這裡封裝所需的查詢條件        //使用者查詢條件    private UserCustom  userCustom;  //這裡對應著上邊的UserCustomer變數    public UserCustom getUserCustom() {        return userCustom;    }    public void setUserCustom(UserCustom userCustom) {        this.userCustom = userCustom;    }}

 

【UserMapper.xml】   //配置非常重要!!!!!,namespace必須對應相應的介面名稱:com.Higgin.Mybatis.mapper.UserMapper

 <mapper namespace="com.Higgin.Mybatis.mapper.UserMapper">    <!--          使用者資訊的綜合查詢(複雜查詢)         #{userCustom.sex}:取出pojo封裝對象中的"性別"值         #{userCusotm.username}:取出pojo封裝類中使用者名稱稱      -->     <select id="findUserList" parameterType="com.Higgin.Mybatis.po.UserQueryVo"                               resultType="com.Higgin.Mybatis.po.UserCustom">         SELECT * FROM USER WHERE user.sex =#{userCustom.sex} AND user.username LIKE ‘%${userCustom.username}%‘     </select> </mapper>

【UserMapper.java】介面,UserMapper.java介面中的方法:findUserList和UserMApper.xml中的方法名要一致

package com.Higgin.Mybatis.mapper;import java.util.List;import com.Higgin.Mybatis.po.User;import com.Higgin.Mybatis.po.UserCustom;import com.Higgin.Mybatis.po.UserQueryVo;public interface UserMapper {        //使用者資訊綜合查詢findUserList    public List<UserCustom> findUserList(UserQueryVo userQueryVo) throws Exception;
}

 

【SqlMapperCongfg.xml】  //添加一個負載檔案,這個檔案會在測試類別中被載入

<!-- 載入對應檔 -->    <mappers>        <mapper resource="sqlmap/user.xml"/>        <mapper resource="mapper/UserMapper.xml"/>    </mappers>

 

【UserMapperTest.java】  //測試類別

public class UserMapperTest {        private SqlSessionFactory sqlSessionFactory ;        @Before    public void setUp() throws Exception {        //建立sqlSessionfactory        //MyBatis設定檔        String resource="SqlMapConfig.xml";        //得到設定檔流        InputStream inputStream=Resources.getResourceAsStream(resource);        //建立會話工廠,傳入MyBatis的設定檔資訊        sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);    }/**     * 使用者資訊的綜合複雜查詢     * @throws Exception     */    @Test    public void testFindUserList() throws Exception {                SqlSession sqlSession =sqlSessionFactory.openSession();                //建立一個UserMapper對象,Mybatis自動產生mapper代理對象        UserMapper userMapper=sqlSession.getMapper(UserMapper.class);                //建立封裝對象,設定查詢條件        UserQueryVo userQueryVo=new UserQueryVo();        UserCustom userCustom=new UserCustom();                userCustom.setSex("1");        userCustom.setUsername("6");                userQueryVo.setUserCustom(userCustom);                //調用UserMapper的方法        List<UserCustom> list=userMapper.findUserList(userQueryVo);            System.out.println(list.size());    }}

 

【運行結果】

【debug的list的資料,所有性別為“1”,username中包含"6"的資料群組】

 

12_複雜查詢01_Mapper代理實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.