`

通过注解多参数方式解决mybatis物理分面

阅读更多
1. 所有的mapper 都是通过mybatis-generator-core-1.3.1.jar(之前的博文中有介绍) 生成了..
   唯独没有提供分页方法..
2  百度很时间终打到满意答案.
   废话不多说,直接上代码
    1 mapper 基类
   
  public interface BaseMapper<T, E, K> {

	int countByExample(E e);

	int deleteByExample(E e);

	int deleteByPrimaryKey(K k);

	int insert(T t);

	int insertSelective(T t);

	List<T> selectByExample(E e);

	T selectByPrimaryKey(K k);

	int updateByExampleSelective(@Param("record") T t, @Param("example") E e);

	int updateByExample(@Param("record") T t, @Param("example") E e);

	int updateByPrimaryKeySelective(K k);

	int updateByPrimaryKey(T t);

	List<T> queryForList(E e, int start, int end);
	
	List<T> selectOnPage(@Param("example")E example, @Param("skipResults")int skipResults,
			@Param("maxResults")int maxResults);

} 

 
2 serivce 片断
   
     
        public interface TrmDayBookMapper extends BaseMapper<TrmDayBook, TrmDayBookExample, TrmDayBookKey> {}
         空实现一下

        @Service
public class TrmDayBookBSImp extends BaseServiceImp<TrmDayBook, TrmDayBookExample, TrmDayBookKey> implements
		ITrmDayBookBS<TrmDayBook, TrmDayBookExample, TrmDayBookKey> {

	@Autowired
	TrmDayBookMapper trmDayBookMapper;

	public JFTResponse<TrmDayBookResVO> selectOnPage(TrmDayBookReqVO reqVO) {
		try {
			JFTResponse<TrmDayBookResVO> jftResponse = new JFTResponse<TrmDayBookResVO>("0");
			reqVO.reckonPage();
			TrmDayBookExample e = new TrmDayBookExample();
			e.createCriteria().andCardNoEqualTo(reqVO.getCardNo()).andTrDateBetween(reqVO.getStartDate(),
					reqVO.getEndDate());
			e.setOrderByClause("SER_NO  asc , ORG_ID desc");
		    List<TrmDayBook> list = trmDayBookMapper.selectOnPage(e,reqVO.getCurrPage(),reqVO.getPageSize());
			Business bus = new Business();
			bus.setResultset(bean2Vo(list));
...
 
     

   3  ...mapper.xml
    此sql generator 不会自动生成.只能每一个mapper.xml手工加上..累啊,
    有大侠研究源码,加上这些东西,就完美了..顺便分享一下..
   
  
   <select id="selectOnPage" resultMap="BaseResultMap">
    SELECT * FROM (
       	SELECT page.*, ROWNUM AS rn FROM 
	       	(
			    select
			    <if test="example.distinct">
			     	 distinct
				</if>
				<include refid="Base_Column_List" />
			    from TRM_DAY_BOOK
				<if test="_parameter  != null">
					<include refid="Update_By_Example_Where_Clause" />
				</if>
				<if test="example.orderByClause != null">
					      order by ${example.orderByClause}
				</if>	
	       	 ) 
       	 page WHERE ROWNUM &lt;= #{skipResults}
     ) 
    WHERE rn &gt;= #{maxResults}
	</select>

       这里的代码和selectByExample 生成的类似..请注意多出的 examp.
 
4 mybatis 自动生成的sql
SELECT *
  FROM (SELECT page.*, ROWNUM AS rn
          FROM (select 
                       *                       
                  from TRM_DAY_BOOK
                 WHERE (CARD_NO = ? and TR_DATE between ? and ?)
                 order by SER_NO asc, ORG_ID desc) page
         WHERE ROWNUM <= ?)
 WHERE rn >= ?
 

时间有限,写在不明了的请轻拍.
参考 以下博客,特此感谢
http://hi.baidu.com/cheung_ming/item/a18bb11c449c01cc38cb303b
http://www.iteye.com/topic/1122976
分享到:
评论

相关推荐

    Mybatis分库分表扩展插件

    这种插件通常通过在Mybatis框架的基础上进行扩展,实现数据的自动分片,将一个庞大的数据库逻辑上分为多个较小的物理库或表,从而提高查询效率和系统性能。 首先,我们需要理解Mybatis的基本概念。Mybatis是一个...

    spring-sharding-mybatis

    【标题】"spring-sharding-mybatis" 涉及到的是Spring Boot集成ShardingSphere(原ShardingJDBC)和MyBatis实现数据库分片的解决方案。这是一个在微服务架构中处理大数据量、高并发场景时,提升系统性能的重要技术。...

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    MyBatis_Plus

    9. **事务管理**:MyBatis_Plus 内置了事务管理,可以通过注解或配置方式开启和关闭事务,简化了事务处理代码。 在使用 MyBatis_Plus 时,通常需要先引入依赖,然后配置实体类、Mapper 和 Service,之后就可以直接...

    mybatis-plus源码(mybatis-plus-3.5.1.zip)

    4. **批量插入与更新**:MyBatis-Plus支持一次性插入或更新多条数据,提高了数据处理的效率。 5. **主键生成策略**:内置了多种主键生成策略,如ID_WORKER(分布式雪花算法)、SEQENCE(序列方式)等,可根据数据库...

    mybatis-plus-3.0

    1. **自动化CRUD操作**:通过简单的配置或注解,即可实现对数据库的增删改查操作,无需编写大量重复的SQL代码。例如,只需定义实体类和Mapper接口,MyBatis-Plus会自动生成对应的SQL语句。 2. **条件构造器**:提供...

    mybatis3.5jar包+mysqljar包.zip

    7. **参数映射**:MyBatis支持多种方式传递参数,包括Map、POJO、基本类型以及使用@Param注解的方式,能够方便地处理复杂参数。 8. **事务管理**:MyBatis可以和Spring集成,利用Spring的事务管理,也可以手动管理...

    MyBatis 分页插件PageHelper Demo

    PageHelper的使用非常简单,主要通过在Service或DAO层的方法上添加`@Page`注解,或者在Mapper接口的方法上添加`@Select`和`@Options`注解来实现分页查询。 1. 在Mapper接口中: ```java public interface ...

    Mybatis面试题(含答案)_20190220222608.pdf

    - **分页实现**:Mybatis支持两种主要的分页方式:内存分页(通过`RowBounds`对象实现)和物理分页。内存分页是在查询出全部数据后,再在Java层进行分页处理,适用于数据量较小的情况。物理分页则是在数据库层通过...

    Mybatis PageHelper(Mybatis分页插件) v5.0 最新免费版.rar

    6. **灵活的配置**:用户可以通过XML或注解的方式进行配置,以满足不同场景的需求。 7. **排序功能**:可以方便地设置排序规则,实现数据的升序或降序排列。 在`free-Mybatis_PageHelper-master`这个压缩包中,包含...

    Spring+SpringMVC+MyBatis整合

    1. **XML或注解配置**:定义SQL语句、参数映射和结果映射。 2. **Mapper接口**:在Java代码中通过接口方法调用SQL,降低了代码与配置的耦合。 3. **SqlSession**:执行SQL并获取结果,负责连接管理,遵循ACID原则。 ...

    MyBatis 10道面试题和答案.docx

    MyBatis作为一个半ORM(对象关系映射)框架,它的核心功能是将Java对象与数据库记录进行映射,通过XML或注解方式配置SQL语句,简化了数据访问层的开发。 MyBatis的优点主要包括: 1. 灵活性高,SQL语句编写自由,...

    spring+mybatis下分表插件shardbatis

    在MyBatis的映射文件中,需要通过特定的注解或标签来指定分片信息。Shardbatis会自动处理SQL语句,将其转化为符合分片规则的实际执行语句。同时,Shardbatis还提供了事务管理和数据一致性保障机制,保证了分布式环境...

    Mybatis面试题(含答案).pdf

    在Mybatis中,#{}和${}是两种不同的参数处理方式。#{}是预编译处理,Mybatis会将SQL中的#{}替换为?号,然后调用PreparedStatement的set方法来赋值。这种方式可以有效地防止SQL注入,提高系统安全性。${}是字符串...

    Mybatis视频教程

    - 提供XML标签,强大的配置文件,灵活的SQL语句,能够通过简单的XML或注解进行配置和原始映射,将接口及Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录; - 避免了大量的JDBC代码和...

Global site tag (gtag.js) - Google Analytics