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"?>
<!DOCTYPEsqlMapPUBLIC"-//ibatis.apache.org//DTDSQLMap 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<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>
<!--结果集映射,-->
<deleteid="delete"parameterClass="java.lang.String">
<!--删除操作-->
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#
</isNotNull>
<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
</select>
<selectid="getPingJiaNum"parameterClass="java.lang.String">
sselectcount(1) frompingjiawhere storeId = #storeId#
</select>
</sqlMap>
4)配置SqlMapConfig配置文件
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEsqlMapConfig
PUBLIC"-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<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带来了极大的性能提升;
3. errorTracingEnabled是否启用错误日志;在开发期间建议设为“true”以方便调试
4. lazyLoadingEnabled是否启动延迟加载机制
5. maxRequests最大并发请求数(Statement并发数)
5. maxTransactions最大并发事务
6. maxSessions最大Session数,即当前最大允许的并发sqlMapClient数(介于maxRequests和maxTransactions之间)
7. useStatementNamespaces是否使用Statement命名空间(为true时,需要追加命名空间)
-->
<transactionManagertype="JDBC">
<dataSourcetype="SIMPLE">
<!--dataSource从属于transactionManager节点,用于设定ibatis运行期使用的DataSource属性
type属性:dataSource节点的type属性指定了dataSource的实现类型,指定了数据源的链接类型,也有3种类型(SIMPLE,DBCP,JNDI)
1. SIMPLE: SIMPLE是ibatis内置的dataSource实现,其中实现了一个简单的数据库连接池机制,对应ibatis实现类为
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/
