<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="User">
<typeAlias alias="page" type="byd.core.Page"/>
<typeAlias alias="user" type="byd.entity.User"/>
<parameterMap id="userMap" class="user">
<parameter property="userName" javaType="string" jdbcType="VARCHAR"/>
<parameter property="passWord" javaType="string" jdbcType="VARCHAR"/>
<parameter property="emplNo" javaType="string" jdbcType="VARCHAR"/>
<parameter property="emplName" javaType="string" jdbcType="VARCHAR"/>
<parameter property="phoneNum" javaType="string" jdbcType="VARCHAR"/>
<parameter property="email" javaType="string" jdbcType="VARCHAR"/>
<parameter property="deptName" javaType="string" jdbcType="VARCHAR"/>
<parameter property="dutyName" javaType="string" jdbcType="VARCHAR"/>
<parameter property="remark" javaType="string" jdbcType="VARCHAR"/>
<parameter property="companyName" javaType="string" jdbcType="VARCHAR"/>
</parameterMap>
<sql id="byUserIdCondition">
<![CDATA[
id = #id:INTEGER#
]]>
</sql>
<!-- 新增用户 -->
<insert id="save" parameterMap="userMap">
<![CDATA[
INSERT INTO PLAN_USER (id,userName,passWord,emplNo,emplName,phoneNum,email,deptName,dutyName,remark,companyName)
VALUES (PLAN_USER_LOG_S.nextval,?,?,?,?,?,?,?,?,?,?)
]]>
<selectKey resultClass="java.lang.Integer">
<![CDATA[
SELECT PLAN_USER_LOG_S.currval
AS id FROM dual
]]>
</selectKey>
</insert>
<!-- 删除用户 -->
<delete id="deleteById" parameterClass="user">
<![CDATA[
delete PLAN_USER
]]>
<dynamic prepend="WHERE">
<include refid="byUserIdCondition"/>
</dynamic>
</delete>
<!-- 修改用户 -->
<update id="update" parameterClass="user">
<![CDATA[
update PLAN_USER
]]>
<dynamic prepend="SET">
<isNotNull property="userName" prepend=",">
<![CDATA[
userName = #userName#
]]>
</isNotNull>
<isNotNull property="passWord" prepend=",">
<![CDATA[
passWord = #passWord#
]]>
</isNotNull>
<isNotNull property="emplNo" prepend=",">
<![CDATA[
emplNo = #emplNo#
]]>
</isNotNull>
<isNotNull property="emplName" prepend=",">
<![CDATA[
emplName = #emplName#
]]>
</isNotNull>
<isNotNull property="phoneNum" prepend=",">
<![CDATA[
phoneNum = #phoneNum#
]]>
</isNotNull>
<isNotNull property="deptName" prepend=",">
<![CDATA[
deptName = #deptName#
]]>
</isNotNull>
<isNotNull property="dutyName" prepend=",">
<![CDATA[
dutyName = #dutyName#
]]>
</isNotNull>
<isNotNull property="remark" prepend=",">
<![CDATA[
remark = #remark#
]]>
</isNotNull>
<isNotNull property="email" prepend=",">
<![CDATA[
email= #email#
]]>
</isNotNull>
<isNotNull property="companyName" prepend=",">
<![CDATA[
companyName = #companyName#
]]>
</isNotNull>
</dynamic>
<dynamic prepend="WHERE">
<include refid="byUserIdCondition" />
</dynamic>
</update>
<!-- 分页查询 -->
<select id="findByPage" parameterClass="page" resultClass="user">
<![CDATA[
SELECT id,userName,passWord,emplNo,emplName,phoneNum,email,deptName,dutyName,remark,companyName,state FROM (SELECT a.*,ROWNUM nm
FROM (SELECT u.id, u.username, u.passWord, u.emplname, u.emplno, u.companyname,u.phoneNum,
u.deptname, u.dutyname,u.remark, u.email,l.state
FROM PLAN_user u LEFT JOIN TIME_logout l ON u.id =l.userid
WHERE (
('$objCondition$' is null or upper(u.userName) LIKE upper('%$objCondition$%'))
OR('$objCondition$' is null or upper(u.phoneNum) LIKE upper('%$objCondition$%'))
OR('$objCondition$' is null or upper(u.email) LIKE upper('%$objCondition$%'))
OR('$objCondition$' is null or upper(u.companyName) LIKE upper('%$objCondition$%'))
OR('$objCondition$' is null or upper(u.deptName) LIKE upper('%$objCondition$%'))
OR('$objCondition$' is null or upper(u.dutyName) LIKE upper('%$objCondition$%')))
ORDER BY id DESC) a
WHERE ($start$=0 OR ROWNUM <= DECODE ($start$, 1, $limit$, $start$ + $limit$ - 1)))
WHERE ($start$=0 OR nm >= $start$)
]]>
</select>
<select id="findByCount" parameterClass="page" resultClass="int">
<![CDATA[
SELECT COUNT(*) FROM PLAN_USER
WHERE (
('$objCondition$' is null or upper(userName) LIKE upper('%$objCondition$%'))
OR('$objCondition$' is null or upper(phoneNum) LIKE upper('%$objCondition$%'))
OR('$objCondition$' is null or upper(email) LIKE upper('%$objCondition$%'))
OR('$objCondition$' is null or upper(companyName) LIKE upper('%$objCondition$%'))
OR('$objCondition$' is null or upper(deptName) LIKE upper('%$objCondition$%'))
OR('$objCondition$' is null or upper(dutyName) LIKE upper('%$objCondition$%')))
]]>
</select>
<!-- 用户登录 -->
<select id="login" parameterClass="user" resultClass="user">
<![CDATA[
SELECT * FROM PLAN_USER u
WHERE userName = #userName# and passWord = #passWord# and u.id not in(SELECT userId FROM TIME_LOGOUT)
]]>
</select>
<!-- 查询所有用户姓名 -->
<select id="findUser" resultClass="user">
<![CDATA[
SELECT emplName FROM PLAN_USER
]]>
</select>
</sqlMap>
分享到:
相关推荐
本资料包包含了关于iBatis语法和常用方法的全面介绍,帮助开发者深入理解并熟练运用iBatis进行数据库操作。 首先,`iBatis 2.3.4 api.chm`是iBatis 2.3.4版本的API参考手册,包含了所有类和接口的详细说明,是学习...
"ibatis in action" 暗示这可能是一本关于如何有效使用iBATIS的实战指南,通常这类书籍会深入讲解框架的各个方面,包括安装配置、基本概念、映射文件、事务管理、动态SQL以及最佳实践等。 标签 "教程" 指出这是一个...
标题:ibatis教程 输入参数详解 描述:ibatis教程 输入参数详解 ibatis快速入门 ...通过上述知识点的学习,可以深入理解ibatis的工作原理,掌握ibatis的基本使用方法,为开发高性能的Java数据库应用打下坚实的基础。
然而,随着技术的发展,Mybatis3.x应运而生,它在Ibatis的基础上进行了诸多改进和优化。 首先,从版本号的升级可以察觉到一个明显的改变,Mybatis3.x引入了更现代化的设计理念。例如,Mybatis3.x的API更加简洁,对...
Ibatis 提供了一些基本的API,如查询、添加、删除和修改方法。通常,会通过 SqlMapClient 的工厂类创建 SqlMapClient 实例,以管理数据库操作。例如,使用 SqlMapClientBuilder 创建 SqlMapClient 对象,然后执行...
这个文件包含一系列的`<select>`、`<insert>`、`<update>`和`<delete>`元素,对应SQL的四种基本操作。每个元素可以包含动态SQL,提供更复杂的查询逻辑。 2. **Java接口与映射**:在Java代码中,创建与SQL Map对应的...
2. "IBatis.cst" - 同样,这可能也是一个代码生成模板,可能用于生成与iBatis.NET集成的基础结构,比如数据库连接配置、数据访问层接口或实体类。 使用这样的模板,开发者可以避免手动编写重复的数据库操作代码,...
- iBatis支持基本的Java对象与数据库表之间的映射,但对象间的关系处理较弱。 - Hibernate则提供了丰富的对象关系映射功能,能够很好地支持复杂对象模型的构建。 - **性能与灵活性**: - 在性能敏感的应用中,...
7. **优化与扩展**:除了基本的代码生成,`IBatis Codesmith`还可以进行一些优化,比如生成分页查询的代码、添加事务管理等。同时,由于模板机制的存在,开发者可以根据实际需求扩展功能,定制更符合自己项目的代码...
其基本语法结构如下: ```xml (" property="propertyName" open="," close=")" conjunction=","> #{propertyName} ``` - `prefix`: 定义在迭代开始前插入的字符串,通常用于生成IN或OR等关键字。 - `property`: ...
Ibatis这个名字来源于"i"(互联网)和"bati"(基础数据访问工具),它提供了SQL映射功能,允许开发者编写自定义的SQL语句,而无需传统的Hibernate等对象关系映射(ORM)框架的复杂性。 Ibatis的主要特点是将SQL与...
iterate标签的基本语法是`(" close=")" conjunction=","/>`,其中`property`指定了集合属性的名称,`open`和`close`定义了循环开始和结束的符号,`conjunction`则是元素之间的连接符。在实际应用中,iterate可以帮助...
对于Oracle的特殊语法,如PL/SQL块,Ibatis3也能够良好支持。 3. CRUD操作:Ibatis3提供了一套完整的API,用于执行增删改查操作。例如,`SqlSession.insert()`用于插入数据,`SqlSession.update()`用于更新,`...
5. 学习路径:对于初学者,首先需要理解Freemarker的基本语法和模板设计理念,然后学习iBatis的配置、映射和动态SQL,最后通过实践项目将两者结合。同时,阅读提供的文档和源代码,可以帮助你快速掌握这两项技术的...
##### 1.1 基础LIKE查询语法 当需要执行一个模糊查询时,通常会使用`LIKE`关键字配合通配符`%`。例如,以下SQL语句将查询所有姓“张”的学生: ```sql SELECT * FROM T_STUDENT WHERE S_NAME LIKE '张%'; ``` 在...
标题 "扩展 iBatis 以透明支持多种数据库" 指的是在 iBatis 数据库持久层框架的基础上,通过一定的编程技巧和配置方法,使其能够灵活地适应不同的数据库系统,无需对应用程序代码进行大规模修改。iBatis 是一个轻量...
7. **性能优化**:除了基本的物理分页,还可以考虑优化策略,如使用索引、避免全表扫描、预热缓存等,以提升查询速度。 综上所述,修改Ibatis源代码实现物理分页涉及的关键技术包括动态SQL、自定义插件、数据库方言...