首页 > 代码库 > 浅谈jdbcTemplate与mybatis
浅谈jdbcTemplate与mybatis
Spring对数据库的操作在jdbc上面做了深层次的封装,也就是工具类 jdbcTemplate
作用:
1: 它提供了AOP式的事务管理
AOP式的事物管理:在以前的事务管理是要融合在逻辑代码中的,在逻辑代码中决定事务是否提交或者回滚,这样很容易造成代码难以维护,代码冗余
但是使用spring的声明式事务后,只需要在数据库处理方法上注解事务,就可以对操作进行管理,事务的设置和逻辑代码分开,容易维护。
不修改原有代码 重新封装现有的组件
类似于: FileWrite fw = new FileWrite();
PrintWrinter pw = new Prinwriter(fw);
2:spring 提供了统一的异常处理,框架处理了异常。
不论Dao层运用什么技术实现 出现的错误全部封装成了DatyaAccessException
如何使用
1 引入相应spring jar包 + 数据库驱动包
2 在spring的主配置文件中配置 jdbcTemplate
<!-- 定义template组件 --> <bean id="template" class="org.springframework.jdbc.core.JdbcTemplate"> <!-- 注入连接信息 --> <property name="dataSource" ref="bonecp"> </property> </bean>
数据连接池 有很多种 这里用的是
com.alibaba.druid.pool.DruidDataSource
<!-- DataSource 数据源 连接池 存储管理大量的链接 流行的 dbcp c3p0,proxool --> <!-- 数据源配置, 使用 BoneCP 数据库连接池 --> <bean id="bonecp" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass --> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <!-- 基本属性 url、user、password --> <property name="url" value="jdbc:mysql://localhost:3306/medicine?useUnicode=true&characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="root" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="60000" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="testWhileIdle" value="true" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <!-- 配置监控统计拦截的filters --> <property name="filters" value="stat" /> </bean>
下一部是根据表 编写实体类
实体类
package com.mxp.jdbc.entity; import java.io.Serializable; public class User implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String id; private String userName; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }
还需要根据实体类写一个rowmapper
注意这里要继承
org.springframework.jdbc.core.RowMapper,然后重写maprow方法
package com.mxp.jdbc.entity; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; /** * 每个实体类都有这个封装组件 * 将User记录封装成 User对象 * @author Administrator * */ public class UserRowMapper implements RowMapper<User>{ /** * arg1:第几行记录 */ @Override public User mapRow(ResultSet arg0, int arg1) throws SQLException { User user = new User(); user.setId(arg0.getString("id")); user.setUserName(arg0.getString("user_name")); return user; } }
浅谈jdbcTemplate与mybatis
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。