1、创建pojo类
public classPingJia
2、创建Dao接口
publicinterfaceIPingJiaDao
3、使用ibatis编写实现类
1)通过pom依赖引入ibatis包
<dependency> |
2)编写实现类,引入ibatisSqlMapClient和Resource
importcom.ibatis.common.resources.Resources; |
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; } |