ibatis语法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ibatis语法相关的知识,希望对你有一定的参考价值。
ibatis动态sql<select id="UPP_ENUM.selectCountByQuery" resultClass="java.lang.Integer" parameterClass="com.taobao.upp.biz.enumtype.dal.query.EnumQuery"> select count(*) from UPP_ENUM t <dynamic prepend="where"> <isNotNull prepend="and" property="typeName"> t.TYPE_NAME = #typeName# </isNotNull> <isNotNull prepend="AND" property="typeId"> t.TYPE_ID = #typeId# </isNotNull> <isNotNull prepend="AND" property="bizId"> t.BIZ_ID = #bizId# </isNotNull> </dynamic> </select> 这个SQL是否有问题???如果按照ibatis的语法来说 如果第一个条件存在的话,那么sql语句会变成select....where and... 如果是这样的话那是有sql的语法错误的。不知道是否有高人解释下,小弟刚接触ibatis。。 如果我写成下面这样把第一个and去掉是否可行?不过如果第一个条件不存在第二个条件存在的话 又和上面一样。迷惑········<select id="UPP_ENUM.selectCountByQuery" resultClass="java.lang.Integer" parameterClass="com.taobao.upp.biz.enumtype.dal.query.EnumQuery"> select count(*) from UPP_ENUM t <dynamic prepend="where"> <isNotNull prepend="" property="typeName"> t.TYPE_NAME = #typeName# </isNotNull> <isNotNull prepend="AND" property="typeId"> t.TYPE_ID = #typeId# </isNotNull> <isNotNull prepend="AND" property="bizId"> t.BIZ_ID = #bizId# </isNotNull> </dynamic> </select> 有知道的高手指点下, 谢谢!
如果你会用IBatis结合其他数据库的话,那结合oracle应该就不会有什么问题了吧。我现在用的就是IBatis和oracle,首先你的配置文件里,应该有数据源的配置,和sqlMapClient的配置,比如:
Java代码
1.<bean id="dataSource"
2.class="org.apache.commons.dbcp.BasicDataSource"
3.destroy-method="close">
4.<property name="driverClassName">
5.<value>net.sourceforge.jtds.jdbc.Driver</value>
6.</property>
7.<property name="url">
8.<value>jdbc:jtds:sqlserver://127.0.0.1:1433/Sample</value>
9.</property>
10.<property name="username">
11.<value>test</value>
12.</property>
13.<property name="password">
14.<value>123456</value>
15.</property>
16.</bean>
17.
18.<bean id="sqlMapClient"
19.class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
20.<property name="configLocation">
21.<value>SqlMapConfig.xml</value>
22.</property>
23.</bean>
24.
25.<bean id="userDAO" class="com.cn.dao.UserDAO">
26.<property name="dataSource">
27.<ref local="dataSource" />
28.</property>
29.<property name="sqlMapClient">
30.<ref local="sqlMapClient" />
31.</property>
32.</bean>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>net.sourceforge.jtds.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:jtds:sqlserver://127.0.0.1:1433/Sample</value>
</property>
<property name="username">
<value>test</value>
</property>
<property name="password">
<value>123456</value>
</property>
</bean>
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>SqlMapConfig.xml</value>
</property>
</bean>
<bean id="userDAO" class="com.cn.dao.UserDAO">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="sqlMapClient">
<ref local="sqlMapClient" />
</property>
</bean>
然后就是你的sqlmap配置文件SqlMapConfig.xml
Java代码
1.<sqlMapConfig>
2.<sqlMap resource="com/cn/dao/entity/sqlmap-mapping.xml"/>
3.</sqlMapConfig>
<sqlMapConfig>
<sqlMap resource="com/cn/dao/entity/sqlmap-mapping.xml"/>
</sqlMapConfig>
然后就是sqlmap-mapping.xml
Java代码
1.<sqlMap namespace="User">
2.<typeAlias alias="user" type="net.xiaxin.dao.entity.User" />
3.<insert id="insertUser" parameterClass="user">
4.INSERT INTO users ( username, password) VALUES ( #username#,
5.#password# )
6.</insert>
7.</sqlMap>
<sqlMap namespace="User">
<typeAlias alias="user" type="net.xiaxin.dao.entity.User" />
<insert id="insertUser" parameterClass="user">
INSERT INTO users ( username, password) VALUES ( #username#,
#password# )
</insert>
</sqlMap>
最后就是DAO调用sqlmap的实现
UserDAO.java
Java代码
1.public class UserDAO extends SqlMapClientDaoSupport implements
2.IUserDAO
3.public void insertUser(User user)
4.getSqlMapClientTemplate().update("insertUser", user);
5.
6.
public class UserDAO extends SqlMapClientDaoSupport implements
IUserDAO
public void insertUser(User user)
getSqlMapClientTemplate().update("insertUser", user);
以上代码仅供参考 参考技术A 第一个不能去掉,如果第一个存在ibatis会自动去掉,但如果你不写第二个也存在时就会报错。
以上是关于ibatis语法的主要内容,如果未能解决你的问题,请参考以下文章
ibatis批处理和把批量数据拼成一条sql语句,哪个效能更好?