1、创建pojo类
public classpingjia
2、创建dao接口
publicinterfaceipingjiadao
3、使用ibatis编写实现类
1)通过pom依赖引入ibatis包
<dependency>
<groupid>com.ibatis</groupid>
<artifactid>ibatis</artifactid>
<version>2.3.4.726</version>
</dependency>
2)编写实现类,引入ibatissqlmapclient和resource
importcom.ibatis.common.resources.resources;
importcom.ibatis.sqlmap.client.sqlmapclient;
importcom.ibatis.sqlmap.client.sqlmapclientbuilder;
3)配置pojo类的ibatis配置文件pingjia.ibatis.xm
<?xmlversion="1.0"encoding="utf-8"?>
<sqlmapnamespace="pingjiadao">
<!--命名空间,在此空间外要引用此空间的元素,则需要加上命名空间名-->
<typealiasalias="pingjia"type="com.koubei.testlearnning.pojo.pingjia"/>
<!--实体别名, 如果有用到全名的地方,可以用别名代替,受命名空间约束-->
<resultmapclass="com.koubei.testlearnning.pojo.pingjia"id="pingjia">
<resultcolumn="pingjiaid"property="pingjiaid"/>
<resultcolumn="pingjiacontent"property="pingjiacontent"/>
<resultcolumn="storeid"property="storeid"/>
<resultcolumn="pingjiatype"property="pingjiatype"/>
<resultcolumn="pingjiadate"property="pingjiadate"/>
</resultmap>
<!--结果集映射,-->
<!--删除操作-->
delete frompingjiawherepingjiaid=#pingjiaid#
</delete>
<insertid="insert"parameterclass="pingjia">
<!--插入操作, 对于自增主键的表,插入可以不配置插入的主键列,否则是必须的-->
insert
intopingjia(pingjiaid,pingjiacontent,storeid,
pingjiatype,pingjiadate)
values(#pingjiaid#, #pingjiacontent#, #storeid#, #pingjiatype#,#pingjiadate#)
</insert>
<updateid="update">
<!--更新操作-->
update task_info
<dynamicprepend="set">
<!--动态sql:prepend表示链接关键字,property表示属性值-->
<isnotnullprepend=" , "property="pingjiacontent">
pingjiacontent=
#excuteperson#
</isnotnull>
<isnotnullprepend=" , "property="storeid">
storeid=#storeid#
</isnotnull>
<isnotnullprepend=" , "property="pingjiatype">
pingjiatype
=#pingjiatype#
<isnotnullprepend=" , "property="pingjiadate">
pingjiadate
=#pingjiadate#
</isnotnull>
</dynamic>
wherepingjiaid=#pingjiaid#
</update>
<selectid="getpingjialist"parameterclass="java.lang.string"resultmap="pingjia">
<!--查询操作,插入语句入参通过parameterclass="类别名"来设定,可以设定类别名,也可以设定为map,
也可以设定为ibatis支持的原生类型(比如string、int、long等, map是最强大的入参方式,任何入参方式
都可以转换为这种入参方式,因为ibatis仅接受一个入参,当几个参数分布在不同对象中的时候,将这些对象
的属性(或者对象本身put)到map中,然后一次传递给sql语句-->
sselect* frompingjiawhere storeid = #storeid#
</select>
<selectid="getgoodpingnum"parameterclass="java.lang.string">
sselectcount(1) frompingjiawhere storeid = #storeid# andpingjiatype=1
<selectid="getpingjianum"parameterclass="java.lang.string">
sselectcount(1) frompingjiawhere storeid = #storeid#
</sqlmap>
4)配置sqlmapconfig配置文件
<!doctypesqlmapconfig
<sqlmapconfig>
<propertiesresource="dbcpconfig.properties"/>
<settingscachemodelsenabled="false"enhancementenabled="true"lazyloadingenabled="false"errortracingenabled="true"maxrequests="400"maxsessions="40"
maxtransactions="32"usestatementnamespaces="true"/>
<!--
1. cachemodelsenabled是否启动sqlmapclient上的缓存机制;
2. enhancementenabled是否针对pojo启用字节码增强机制以提升getter/setter的调用效能,
避免使用java reflect所带来的性能开销,同时也为lazy loading带来了极大的性能提升;
4. lazyloadingenabled是否启动延迟加载机制
5. maxrequests最大并发请求数(statement并发数)
5. maxtransactions最大并发事务
6. maxsessions最大session数,即当前最大允许的并发sqlmapclient数(介于maxrequests和maxtransactions之间)
7. usestatementnamespaces是否使用statement命名空间(为true时,需要追加命名空间)
-->
<transactionmanagertype="jdbc">
<datasourcetype="simple">
type属性:datasource节点的type属性指定了datasource的实现类型,指定了数据源的链接类型,也有3种类型(simple,dbcp,jndi)
com.ibatis.sqlmap.engine.datasource.simpledatasourcefactory。
2. dbcp:基于apachedbcp连接池组件实现的datasource封装,当无容器提供datasource服务时,
建议使用该选项,对应ibatis实现类为com.ibatis.sqlmap.engine.datasource.dbcpdatasourcefactory。
3. jndi:使用j2ee容器提供的datasource实现,datasource将通过指定的jndi name从容器中获取。
对应ibatis实现类为com.ibatis.sqlmap.engine.datasource.jndidatasourcefactory。
-->
<propertyname="jdbc.driver"value="${driverclassname}"/>
<propertyname="jdbc.connectionurl"value="${url}"/>
<propertyname="jdbc.username"value="${username}"/>
<propertyname="jdbc.password"value="${password}"/>
<propertyname="pool.maximumactiveconnections"value="10"/><!--连接池维持的最大容量-->
<propertyname="pool.maximumidleconnections"value="5"/><!--连接池允许挂起的最大连接-->
<propertyname="pool.maximumcheckouttime"value="120000"/><!--连接被某个任务所允许占用的最大时间-->
<propertyname="timetowait"value="500"/><!--线程允许等待的最大时间-->
</datasource>
</transactionmanager>
<!--指定映射文件的位置,配置中可出现多个sqlmap节点,以指定项目内所有映射文件-->
<sqlmapresource="conf/sqlmap/pingjia.ibatis.xml"/>
</sqlmapconfig>
5)读取配置文件
static{
try{
reader reader = resources.getresourceasreader("conf/testlearnning.sqlmapconfig.xml");
sqlmap= sqlmapclientbuilder.buildsqlmapclient(reader);
}catch(exception e) {
e.printstacktrace();
}
6)增删改查相关操作
@override
publicbooleaninsert(pingjia pingjia) {
booleanflag =false;
try{
sqlmap.insert("pingjiadao.insert", pingjia);
flag =true;
}catch(sqlexception e) {
e.printstacktrace();
}
returnflag;
本文出自seven的测试人生公众号最新内容请见作者的github页:http://qaseven.github.io/