`
中华好儿孙
  • 浏览: 68689 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mybatis的sql标记的使用

阅读更多
数据库:
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
分享到:
评论

相关推荐

    Mybatis实现动态代理,动态SQL

    在使用Mybatis框架时,还可以使用 `&lt;sql&gt;` 和 `&lt;include&gt;` 标签来实现SQL重用。例如,使用 `&lt;sql&gt;` 标签来定义一个SQL片段,然后使用 `&lt;include&gt;` 标签来引入这个SQL片段。 Mybatis框架提供了多种方式来实现动态...

    springMVC和mybatis整合,mybatis使用注解模式

    在Mapper接口中,我们可以使用@Select、@Insert、@Update和@Delete等注解来标记SQL语句。同时,@Results和@Result注解用于映射查询结果到Java对象。这种方式避免了XML配置文件,提高了代码的可读性和可维护性。 ...

    mybatis直接拼写sql即原生sql返回结果bootstarp datatable struts2 jquery 手机端html5响应式整合

    首先,MyBatis是一个流行的Java持久层框架,它允许开发者直接编写SQL语句,从而实现灵活的数据查询和操作。MyBatis消除了几乎所有的JDBC代码和手动设置参数,通过XML或注解的方式将SQL与Java代码绑定,简化了数据库...

    Spring mvc 和 mybatis 整合、 mybatis使用注解模式

    7. **Mapper配置**:在Mapper接口的类路径下创建对应的Mapper XML文件,虽然使用了注解,但仍然需要一个空的XML文件作为MyBatis扫描的标记。 8. **创建Service层**:创建Service层接口及实现类,注入Mapper接口,并...

    基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密

    在MyBatis中,我们通常使用XML映射文件或注解来定义SQL语句。对于数据加密的需求,MyBatis提供了一种称为“插件”的机制,可以拦截SQL执行过程并在其中插入加密或解密的逻辑。MyBatis的插件系统允许开发者创建自定义...

    springboot中使用jsp、使用mybatis、使用分页插件

    MyBatis是一个轻量级的ORM(Object-Relational Mapping)框架,它允许开发者将SQL语句与Java代码分离,使得数据库操作更加灵活和易于维护。在SpringBoot中集成MyBatis,需要在`pom.xml`引入MyBatis和SpringBoot ...

    Mybatis+注解轻松实现脱敏

    MyBatis插件机制允许开发者自定义拦截器,以在SQL执行前后插入额外的操作。在这个场景下,我们可以利用插件来对输入参数中的敏感数据进行加密,并对查询结果进行解密。主要涉及两个关键接口:`ParameterHandler`和`...

    mybatis所用架包

    通过@Mapper注解标记接口,MyBatis可以在运行时动态生成实现类,实现SQL的执行。同时,ResultMap用于描述如何将数据库查询结果映射到Java对象。 MyBatis的参数映射和结果映射是其灵活性的关键。在Mapper XML中,...

    Spring Boot整合mybatis 配置Druid数据源开启sql监控

    使用`@Mapper`注解标记接口,并在Spring Boot配置文件中启用自动扫描Mapper接口。 6. **开启Druid SQL监控** Druid提供了一个内置的Web监控界面,可以查看数据库连接池状态、SQL执行情况等。要在Spring Boot应用中...

    MyBatis的27道面试题

    在MyBatis中,使用#{}和${}两种方式获取参数时,它们的差别主要在于:#{}是预编译处理,它会将参数预编译到SQL语句中,可以有效防止SQL注入,而${}是直接将参数拼接在SQL语句中,不推荐使用。当实体类属性与数据库...

    Mybatis用户指南及演示代码

    Mybatis的动态SQL功能非常强大,允许在XML映射文件中使用条件判断、循环等结构,使得SQL语句可以根据实际需求灵活生成。 5. **Mapper接口与Mapper XML的关联** Mybatis通过注解或者XML文件将Mapper接口与对应的...

    MyBatis3 教程 中文完整版

    使用注解@Param标记参数。 6. **结果映射** 结果映射主要用于复杂的数据结构映射,例如一对一、一对多、多对多关系的映射,以及自定义结果处理器。 7. **缓存机制** MyBatis内置了两级缓存:一级缓存是...

    spring boot 整合mybatis

    - **创建Mapper接口**:定义Mapper接口,接口方法对应SQL语句,使用@Mapper注解标记。 - **Mapper XML文件**:创建对应的Mapper XML文件,编写SQL语句。 - **配置Mapper扫描**:在Spring Boot的配置类中,使用@...

    demo.zip_Mybatis注解时的sql语句拼接方法_SSM 注解_SSM分页查询_mybatis注解分页_基于ssm

    在这种情况下,我们通常需要自定义SQL或者使用MyBatis的动态SQL特性,如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签来实现动态条件的拼接。 `demo.zip`中提供的Java类很可能是为了弥补这个不足,通过编写...

    源码:【Spring+MyBatis+MySQL实战入门】一、MyBatis操作入门

    - 使用`@Mapper`注解标记Mapper接口,使MyBatis能够识别。 5. 数据库连接与事务管理 - 通过DataSource获取数据库连接。 - SqlSession提供了开始事务、提交事务、回滚事务的方法,管理数据库事务。 6. CRUD操作 ...

    Mybatis plus无介绍快使用,自定义sql语句CRUD增删改查附源码(二)

    4. 实体类注解:在实体类上使用@TableId、@TableField等注解,标记主键和字段信息。 三、自定义SQL语句 Mybatis Plus允许开发者自定义SQL语句,以满足复杂查询需求。主要有以下几种方式: 1. LambdaQueryWrapper:...

    spring+mybatis模板

    1. **XML 或注解配置**:MyBatis 允许开发者在 XML 文件或实体类上使用注解来定义 SQL 语句,使得 SQL 与代码分离,易于管理和调试。 2. **动态 SQL**:MyBatis 支持动态 SQL,可以根据条件动态生成 SQL,增加了代码...

    mybatis-annotations.zip

    1. **@Mapper**: 这个注解是定义Mapper接口时使用的,标记在接口上,表明这个接口是一个MyBatis的Mapper接口。例如: ```java @Mapper public interface UserMapper { User selectUserById(int id); } ``` 2. **@...

    SpringMVC+Mybatis demo

    Service层通常包含Service接口和实现类,使用依赖注入(DI)来注入MyBatis的Mapper接口,从而完成数据访问。 **MyBatis** MyBatis是一个基于Java的持久层框架,它允许开发者编写SQL语句,同时提供了强大的映射框架...

    SpringMVC 和Mybatis 集成

    - 创建Mapper接口:在Java代码中创建Mapper接口,接口方法对应SQL语句,使用@Mapper注解标记。 - 编写Mapper XML文件:在资源目录下创建对应的Mapper XML文件,编写SQL语句,通过id与Mapper接口的方法对应。 - ...

Global site tag (gtag.js) - Google Analytics