关于分页及增删改查

本文介绍了一种基于MyBatis的分页查询方法,并提供了具体的Java实现示例与XML配置文件细节。此外,还展示了如何通过自定义SQL进行更复杂的分页操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、分页

(1)、第一种分页查询函数,使用根据传入的查询语句来分页查询(部分查询语句) 会调用XML文件中的SELECTBYPAGE 与PAGECOUNT

例如:

public AjaxPage loadPageDate(Integer page, Integer rows, MortgageInfo obj, SortBean sortBean) throws Exception {
StringBuffer sql = new StringBuffer();
sql.append(SqlBuilderUtil.popuLikeSql("m", "mortgcode_", obj.getMortgcode_()));// 合同编号
sql.append(SqlBuilderUtil.popuLikeSql("bas", "assetsname", obj.getAssetsname()));// 资产名称
sql.append(SqlBuilderUtil.popuEqSql("m", "assetsinfoid_", obj.getAssetsinfoid_()));// 资产id
sql.append(SqlBuilderUtil.popuEqSql("m", "mortgstate_", obj.getMortgstate_()));// 抵押状态
sql.append(SqlBuilderUtil.popuBeginDateOra("m", "startTime_", obj.getBeginTime()));// 抵押时间
sql.append(SqlBuilderUtil.popuEndDateOra("m", "startTime_", obj.getEndTime()));// 抵押时间
sql.append(SqlBuilderUtil.popuOrderSql(sortBean.getAliases(), sortBean.getProperty(), sortBean.getDirection(),
"createTime_", "desc"));
return super.ajaxPagedQuery(sql.toString(), page, rows);
}

xml中的sql语句

<select id="com.app.mortgage.domain.MortgageInfo.selectPage"
parameterClass="java.lang.String" resultClass="MortgageInfo">
<![CDATA[
 select m.*, b.name_ bankname, bas.assetsName, bas.unitname_
 from tbl_assets_mortg m
 left join tbl_bank_info b on m.bankid_ = b.id_
 left join (select tat.mortgcode_,
                   wmsys.wm_concat(tab.name_ || ' ') assetsName, wmsys.wm_concat(s.unitname_ || ' ') unitname_
              from tbl_assets_mortg tat
              left join tbl_assets_mortgchild ta on ta.mortgcode_ =
                                                        tat.mortgcode_
                  left join tbl_assets_base_info tab on tab.id_ =
                                                        ta.assetsinfoid_
                    left join s_unit s on s.unituuid_ = tab.unituuid_
                 group by tat.mortgcode_) bas on m.mortgcode_ =
                                                                bas.mortgcode_
                 
]]>
<isNotEmpty>where 1=1 $value$</isNotEmpty>
</select>

<select id="com.app.mortgage.domain.MortgageInfo.pageCount"
parameterClass="java.lang.String" resultClass="java.lang.Integer">
<![CDATA[
select count(*) as xx
 from tbl_assets_mortg m
 left join tbl_bank_info b on m.bankid_ = b.id_
 left join (select tat.mortgcode_,
                   wmsys.wm_concat(tab.name_ || ' ') assetsName, wmsys.wm_concat(s.unitname_ || ' ') unitname_
              from tbl_assets_mortg tat
              left join tbl_assets_mortgchild ta on ta.mortgcode_ =
                                                         tat.mortgcode_
                   left join tbl_assets_base_info tab on tab.id_ =
                                                         ta.assetsinfoid_
                     left join s_unit s on s.unituuid_ = tab.unituuid_
                  group by tat.mortgcode_) bas on m.mortgcode_ =
                                                                 bas.mortgcode_
]]>
<isNotEmpty>where 1=1 $value$</isNotEmpty>
</select>

(2)、往往一个页面对同一个实体对象需要两个或多个分页查询,这就需要指定自定义的sql语句了

public AjaxPage loadPageDataHis(Integer page, Integer rows, MortgageInfo obj, SortBean sortBean) throws Exception {
StringBuffer sql = new StringBuffer();
sql.append(SqlBuilderUtil.popuEqSql("bas", "assetsid", obj.getAssetsinfoid_()));// 资产id
sql.append(SqlBuilderUtil.popuLikeSql("bas", "mortgcode_", obj.getMortgcode_()));// 合同编码
sql.append(SqlBuilderUtil.popuEqSql("m", "mortgstate_", obj.getMortgstate_()));// 抵押状态
sql.append(SqlBuilderUtil.popuOrderSql(sortBean.getAliases(), sortBean.getProperty(), sortBean.getDirection(),
"starttime_", "asc"));
return super.ajaxPagedQuery(sql.toString(), page, rows, ".selectPageHistorySepara", ".pageCountHistorySepara");
}

xml中的sql语句

<select id="com.app.mortgage.domain.MortgageInfo.selectPageHistory"
parameterClass="java.lang.String" resultClass="MortgageInfo">
<![CDATA[
 select m.*, b.name_ bankname, bas.assetsName, bas.unitname_
 from tbl_assets_mortg m
 left join tbl_bank_info b on m.bankid_ = b.id_
 left join TBL_ASSETS_MORTGCHILD amc on M.MORTGCODE_ = AMC.MORTGCODE_
 left join (select tat.mortgcode_,
                   wmsys.wm_concat(tab.name_ || ' ') assetsName, wmsys.wm_concat(s.unitname_ || ' ') unitname_
              from tbl_assets_mortg tat
              left join tbl_assets_mortgchild ta on ta.mortgcode_ =
                                                        tat.mortgcode_
                  left join tbl_assets_base_info tab on tab.id_ =
                                                        ta.assetsinfoid_
                    left join s_unit s on s.unituuid_ = tab.unituuid_
                 group by tat.mortgcode_) bas on m.mortgcode_ =
                                                                bas.mortgcode_
                 
]]>
<isNotEmpty>where 1=1 $value$</isNotEmpty>
</select>
<select id="com.app.mortgage.domain.MortgageInfo.pageCountHistory"
parameterClass="java.lang.String" resultClass="java.lang.Integer">
<![CDATA[
select count(*) as xx
 from tbl_assets_mortg m
 left join tbl_bank_info b on m.bankid_ = b.id_
 left join TBL_ASSETS_MORTGCHILD amc on M.MORTGCODE_ = AMC.MORTGCODE_
 left join (select tat.mortgcode_,
                   wmsys.wm_concat(tab.name_ || ' ') assetsName, wmsys.wm_concat(s.unitname_ || ' ') unitname_
              from tbl_assets_mortg tat
              left join tbl_assets_mortgchild ta on ta.mortgcode_ =
                                                         tat.mortgcode_
                   left join tbl_assets_base_info tab on tab.id_ =
                                                         ta.assetsinfoid_
                     left join s_unit s on s.unituuid_ = tab.unituuid_
                  group by tat.mortgcode_) bas on m.mortgcode_ =
                                                                 bas.mortgcode_
]]>
<isNotEmpty>where 1=1 $value$</isNotEmpty>
</select>

二、增删改查

使用的方法都在父类IBatisEntityDao中,可自行查询,后期补充


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值