以活动日志为例,打开Persistence 项目
在 interface IActionLogDao
添加接口定义
/// <summary>
/// 根据可用标记获取所有的日志信息(分页)
/// </summary>
/// <returns></returns>
List<ActionLog> GetActionLogListByActivity(ActionLog al, int start, int limit);
在ActionLogDao 中实现这个方法
/// <summary>
/// 根据可用标记获取所有的日志信息(分页)
/// </summary>
/// <returns></returns>
public List<ActionLog> GetActionLogListByActivity(ActionLog al, int start, int limit)
{
try
{
Hashtable ht = new Hashtable();
ht.Add("obj", al);
ht.Add("start", start * limit + 1);
ht.Add("end", start * limit + limit);
return base.ExecuteQueryForList<ActionLog>("ActionLog.FindAllByObjectForPage", ht) as List<ActionLog>;
}
catch (Exception)
{
throw;
}
}
Services项目中使用
public DataPageInfo GetActionLogListForPageData(ActionLog al, int start, int limit)
{
DataPageInfo obj = new DataPageInfo();
obj.DataList = base.Change2ArrayList<ActionLog>(ActionLogDao.GetActionLogListByActivity(al, start, limit));
obj.SumNum = ActionLogDao.GetSumActionLogListByActivity(al);
return obj;
}
SqlMap 的XML 要加方法的SQL配置
<select id="ActionLog.FindAllByObjectForPage" parameterClass="System.Collections.IDictionary" resultMap="ActionLog_result">
SELECT * FROM (SELECT ROWNUM RN, t_t.* FROM (select * from SYS_ACTION_LOG where 1=1
<!--<isNotEmpty prepend="and" property="UserId">
USER_ID like '%$obj.UserId$%'
</isNotEmpty>
<isGreaterThan prepend="and" property="LoginTime" compareValue="1900-01-01">
LOGIN_TIME = #obj.LoginTime#
</isGreaterThan>
<isNotEmpty prepend="and" property="Action">
ACTION like '%$obj.Action$%'
</isNotEmpty>
<isNotEmpty prepend="and" property="UserName">
USER_NAME like '%$obj.UserName$%'
</isNotEmpty>
<isNotEmpty prepend="and" property="UserAttribute">
USER_ATTRIBUTE like '%$obj.UserAttribute$%'
</isNotEmpty>-->
order by SYS_ACTION_LOG.Id desc) t_t WHERE
<![CDATA[ ROWNUM <= #end# ]]>
)
<![CDATA[ WHERE RN >= #start# ]]>
</select>
注意,每次调试都要关闭Asp.Net 调试器
扩展一个方法,扩展一个PO,获得其中的外联表结果集合
在PO里面扩展Combo类,添加一个列表成员
/// <summary>
/// 套餐代理商列表
/// </summary>
private List<StoComboAgent> stoComboAgentList;
/// <summary>
/// 套餐代理商列表
/// </summary>
private List<StoComboAgent> StoComboAgentList
{
get { return stoComboAgentList; }
set { stoComboAgentList = value; }
}
修改该 SQLMap 的XML配置信息
先修改该子表StoComboAgent的配置
<select id="StoComboAgent.FindByComboId" parameterClass="int" resultMap="StoComboAgent_result" extends="StoComboAgent.FindAll">
WHERE (sto_combo_agent.combo_id = #value#)
</select>
然后再为Combo的XML文件中添加如下配置
<result property="StoComboAgentList" column="ID" select="StoComboAgent.FindByComboId"/>
添加新属性
先在PO的对象中添加属性
/// <summary>
/// 上线时间
/// </summary>
private DateTime startupTime;
/// <summary>
/// 上线时间
/// </summary>
public DateTime StartupTime
{
get { return startupTime; }
set { startupTime = value; }
}
修改该SQLMap的对应内容
添加
<result property="StartupTime" column="Startup_Time"/>
再每个操作配置中都要加入这个属性
,startup_time
分享到:
相关推荐
ibatis调用oracle存储过程分页
在这个项目中,开发者可能采用了简单的SQL拼接方式,即在动态构建的SQL查询语句中添加LIMIT或OFFSET子句来实现分页,这种方式简单易懂,但可能不适用于所有Oracle版本和复杂查询场景。 "AJAX"是Asynchronous ...
在2.3.4这个版本中,Ibatis 提供了数据库无关的分页功能,这是一种在不依赖特定数据库语法的情况下实现分页查询的方法,有助于提高代码的可移植性和维护性。 数据库无关分页的核心思想是将分页参数(如当前页数和每...
Spring的IoC容器管理对象的生命周期和依赖关系,而Spring的AOP模块则允许开发者在不修改源代码的情况下,对业务逻辑进行横切关注点的添加,如事务管理。 3. **iBatis**:这是一款持久层框架,它将SQL与Java代码分离...
在实际操作中,开发者需要先配置数据库连接,然后根据业务需求编写Service和Mapper接口,接着在Action中调用Service方法来处理用户请求。最后,前端页面可以通过Ajax或者Form提交来发送请求,获取并显示处理结果。 ...
总的来说,Ibatis.Net为.NET开发者提供了一种高效、灵活的数据库访问方式,使得他们可以专注于业务逻辑的实现,而不是繁琐的数据操作。通过学习和掌握Ibatis.Net,开发者可以提升项目的开发效率和质量。
**正文** `ibatis`,全称为`MyBatis`,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。在Java世界里,`ibatis`为解决繁琐的...通过深入理解和熟练运用`ibatis`,可以构建出高效、可扩展的业务系统。
虽然提供的描述提到使用Oracle数据库,但考虑到MySQL是更常见的开源选择,我们将以MySQL为例进行讲解。 首先,`SpringBoot`是一个由Pivotal团队开发的Java框架,它简化了创建独立的、生产级别的基于Spring的应用...
这是一个基于老旧技术栈的Web应用集成示例,主要包括Struts1.2、iBatis(现为MyBatis)和Spring2.0框架,以及Oracle10g数据库。这个项目可能是一个初学者为了学习和实践这些技术而创建的,特别加入了分页功能,以...
2. Struts2 Action:接收jqGrid的请求,解析参数,调用业务逻辑方法。 3. iBatis SQL映射:根据Action传递的参数,执行相应的SQL语句,如INSERT、UPDATE、DELETE和SELECT。 4. 数据库操作:Oracle数据库执行iBatis...
<br>7、 Sql模板和ORMap直接生成.cs原代码,编译为可执行代码,各种ORMap映射文件无需再随主程序集一起部署,提高了代码的安全性,提高了代码的可调试性,也提高了ORMap的性能。 <br> <br>下面三张表格...
拦截器器的理解:拦截器是在AOP(面向切面编程)思想下扩展出来的一种技术,它可以拦截方法或方法调用。 Spring融入框架:Spring是目前最流行的开源框架,它提供了控制反转(Inversion of Control, IoC)和面向切面编程...
- 使用PreparedStatement对象的addBatch()方法添加SQL语句。 - 调用executeBatch()执行所有SQL语句。 ##### Oracle分页 - 使用ROWNUM伪列结合子查询实现分页。 - 或使用WITH子句配合RANK()函数实现更复杂的分页...
- **编写Service层**:调用Mapper接口提供的方法完成业务逻辑处理。 #### 9. 实现图片上传/文件下载/分页的方法 - **图片上传**:前端页面使用`<input type="file">`控件选择图片,后端使用Servlet接收文件并保存...
<br>7、 Sql模板和ORMap直接生成.cs原代码,编译为可执行代码,各种ORMap映射文件无需再随主程序集一起部署,提高了代码的安全性,提高了代码的可调试性,也提高了ORMap的性能。 <br> <br>下面三张表格...
- **finalize**:对象被垃圾回收前调用的方法,已过时。 ##### Io流的层次结构 - 输入流:InputStream、Reader。 - 输出流:OutputStream、Writer。 ##### JAVA - Java是一种广泛使用的高级编程语言。 ##### ...
52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...
52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...
52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...
52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...