create table INSURANCE_PRODUCT ( product_code VARCHAR2(32) not null, product_name NVARCHAR2(20), product_type VARCHAR2(1), validate_date VARCHAR2(8) ) ; alter table INSURANCE_PRODUCT add constraint PK primary key (PRODUCT_CODE); insert into INSURANCE_PRODUCT (product_code, product_name, product_type, validate_date) values ('01001', '牙刷', '1', '20150819'); insert into INSURANCE_PRODUCT (product_code, product_name, product_type, validate_date) values ('01002', '毛巾', '1', '20150818'); insert into INSURANCE_PRODUCT (product_code, product_name, product_type, validate_date) values ('01003', '脸盆', '1', '20150817'); insert into INSURANCE_PRODUCT (product_code, product_name, product_type, validate_date) values ('02001', '手机', '2', '20150820'); insert into INSURANCE_PRODUCT (product_code, product_name, product_type, validate_date) values ('02002', '笔记本', '2', '20150821'); insert into INSURANCE_PRODUCT (product_code, product_name, product_type, validate_date) values ('02003', 'ipad', '2', '20150822'); insert into INSURANCE_PRODUCT (product_code, product_name, product_type, validate_date) values ('03001', '苹果', '3', '20150101'); insert into INSURANCE_PRODUCT (product_code, product_name, product_type, validate_date) values ('03002', '香蕉', '3', '20150102'); insert into INSURANCE_PRODUCT (product_code, product_name, product_type, validate_date) values ('03003', '梨子', '3', '20150103'); insert into INSURANCE_PRODUCT (product_code, product_name, product_type, validate_date) values ('04001', '衣服', '4', '20150808'); commit;
BaseMapper.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="baseMapper"> <sql id="filterWhereParam"> <foreach collection="mapTag" item="myvalue" index="mykey"> <if test="myvalue != null and myvalue != ''"></if> and ${mykey} = #{myvalue} </foreach> </sql> </mapper>
InsuranceProductMapper.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="InsuranceProductMapper"> <resultMap type="entity.InsuranceProduct" id="queryMap"> <id column="PRODUCT_CODE" property="productCode"/> <result column="PRODUCT_NAME" property="productName"/> <result column="PRODUCT_TYPE" property="productType"/> <result column="VALIDATE_DATE" property="validateDate"/> </resultMap> <select id="selectAllByCondition" resultMap="queryMap" parameterType="query.Query"> select t.PRODUCT_CODE, t.PRODUCT_NAME, t.PRODUCT_TYPE, t.VALIDATE_DATE from INSURANCE_PRODUCT t where 1 = 1 <include refid="baseMapper.filterWhereParam"></include> </select> </mapper>
查询参数 Query.java:
package query; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Query { private List<String> listTag = new ArrayList<String>(); private Map<String, String> mapTag = new HashMap<String, String>(); public List<String> getListTag() { return listTag; } public void setListTag(List<String> listTag) { this.listTag = listTag; } public Map<String, String> getMapTag() { return mapTag; } public void setMapTag(Map<String, String> mapTag) { this.mapTag = mapTag; } }
表对应的实体类 InsuranceProduct.java:
package entity; public class InsuranceProduct { private String productCode; private String productName; private String productType; private String validateDate; public String getProductCode() { return productCode; } public void setProductCode(String productCode) { this.productCode = productCode; } public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; } public String getProductType() { return productType; } public void setProductType(String productType) { this.productType = productType; } public String getValidateDate() { return validateDate; } public void setValidateDate(String validateDate) { this.validateDate = validateDate; } @Override public String toString() { return "\nInsuranceProduct [productCode=" + productCode + ", productName=" + productName + ", productType=" + productType + ", validateDate=" + validateDate + "]\n"; } }
TestMybatis.java:
package test; import java.io.InputStream; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import query.Query; public class TestMybatis { @Test public void testCommon(){ //mybatis的配置文件 String resource = "mybatis-config.xml"; //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件) InputStream is = TestMybatis.class.getClassLoader().getResourceAsStream(resource); //构建sqlSession的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); //创建能执行映射文件中sql的sqlSession SqlSession session = sessionFactory.openSession(); String statement = "InsuranceProductMapper.selectAllByCondition";//映射sql的标识字符串 List<Object> list = session.selectList(statement); System.out.println(list); } @Test public void testForeachSimple(){ //mybatis的配置文件 String resource = "mybatis-config.xml"; //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件) InputStream is = TestMybatis.class.getClassLoader().getResourceAsStream(resource); //构建sqlSession的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); //创建能执行映射文件中sql的sqlSession SqlSession session = sessionFactory.openSession(); String statement = "InsuranceProductMapper.selectAllByCondition";//映射sql的标识字符串 Query query = new Query(); query.getMapTag().put("t.PRODUCT_CODE", "01001"); System.out.println(query.getMapTag()); List<Object> list = session.selectList(statement, query); System.out.println(list); } }
参考: http://blog.csdn.net/isea533/article/details/22336991