有時候我們dao方法聲明的入參需要是自定義的pojo,以滿足復雜的查詢條件。
IWebUserCustomDao.java
package com.mozi.dao; import java.util.List; import com.mozi.entity.WebUser; import com.mozi.entity.WebUserCustom; public interface IWebUserCustomDao { public List<WebUser> findUserList(WebUserCustom userQueryVo); }
sqlmap\userCustomMapper.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"> <!-- namespace命名空間,作用就是對sql進行分類化的管理,理解為sql隔離 注意:使用mapper代理開發時,namespace有特殊作用 --> <mapper namespace="com.mozi.dao.IWebUserCustomDao"> <select id="findUserList" parameterType="com.mozi.entity.WebUserCustom" resultType="com.mozi.entity.WebUser" > select * from WebUsers <where> <if test ="enable!=null"> Enable = #{enable} </if> <if test ="enable==null"> Enable is NULL </if> </where> </select> </mapper>
同事statment中用到了動態sql : where ,if 。
測試類WebUserCustomDaoImplTest.java
package com.mozi.test.java; import static org.junit.Assert.*; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import com.mozi.dao.IWebUserCustomDao; import com.mozi.dao.IWebUserDao; import com.mozi.dao.impl.WebUserDaoMybatis3; import com.mozi.entity.WebUser; import com.mozi.entity.WebUserCustom; public class WebUserCustomDaoImplTest { private static SqlSessionFactory sqlSessionFactory = null; static{ String resource = "SqlMapConfig.xml"; InputStream inputStream = null; try { inputStream = Resources.getResourceAsStream(resource); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } @Test public void findUserListTest() { SqlSession sqlSession=null; sqlSession=sqlSessionFactory.openSession(); //生成代理類 IWebUserCustomDao userMapper=sqlSession.getMapper(IWebUserCustomDao.class); //創建包裝對象,設置查詢條件 WebUserCustom userCustom=new WebUserCustom(); userCustom.setEnable(true); List<WebUser> list = userMapper.findUserList(userCustom); System.out.println(list); sqlSession.close(); } }