spring JDBC 事务管理java
Spring中封装了JDBC的ORM框架,能够用它来操做数据,不须要再使用外部的OEM框架(MyBatis),一些小的项目用它。mysql
步骤:spring
aopalliance-1.0.0.jarsql aspectjweaver-1.6.8.jar数据库 commons-dbcp-1.4.jar // 数据库链接池express commons-logging-1.1.1.jarapache commons-pool-1.5.3.jarapp mysql-connector-java-5.1.38-bin.jar框架 spring-aop-4.3.10.RELEASE.jarurl spring-aspects-4.3.10.RELEASE.jar spring-beans-4.3.10.RELEASE.jar spring-context-4.3.10.RELEASE.jar spring-context-support-4.3.10.RELEASE.jar spring-core-4.3.10.RELEASE.jar spring-expression-4.3.10.RELEASE.jar spring-jdbc-4.3.10.RELEASE.jar //jdbc 操做的对象包 spring-tx-4.3.10.RELEASE.jar //数据库中的事务处理包 |
<!-- 加载链接数据的的属性文件 --> <bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:config/jdbc.properties"/> </bean> <!-- 配置数据源对象,此数据源用的是dbcp链接池 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <!-- 链接数据库的基本配置 ${driver}读取到属性文件的键对应的值--> <property name="driverClassName" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <!-- 配置链接池相关属性,初始大小,最大链接数,最大空闲,最小空闲,最大空闲时间 --> <property name="initialSize" value="${initialSize}"/> <property name="maxActive" value="${maxActive}"/> <property name="maxIdle" value="${maxIdle}"/> <property name="minIdle" value="${minIdle}"/> <property name="maxWait" value="${maxWait}"/> </bean> <!-- Spring框架封装好的JDBC对象,能够操做数据 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean> |
@Service // 扫描到IOC容器中 public class GradeService { @Autowired // 自动从IOC容器中注入对象 JdbcTemplate jdbcTemplate;
// 查询全部 public List<Grade> getGrades() { String sql = "select * from grade"; // 数据行映射器,映射数据行的列与实体对象的属性对应 RowMapper<Grade> rm = new BeanPropertyRowMapper<>(Grade.class); // 能够把查询的结果集中的数据行一行行封装成实体对象 List<Grade> grades = jdbcTemplate.query(sql, rm); return grades; }
// 根据ID查询单个对象 public Grade getGradeById(int id) { RowMapper<Grade> rm = new BeanPropertyRowMapper<>(Grade.class); String sql = "select * from grade where gradeId=?"; return jdbcTemplate.query(sql, new Object[] { id }, rm).get(0); }
// 根据ID查询年级名称,返回单个值 public String getGradeNameById(int id) { String sql = "select gradeName from grade where gradeId=?"; return jdbcTemplate.queryForObject(sql, new Object[] { id }, String.class); }
// 根据年级名称查询ID,返回单个值 public int getGradeIdByName(String name) { String sql = "select gradeId from grade where gradeName=?"; return jdbcTemplate.queryForObject(sql, new Object[] { name }, int.class); } //添加,增,删,改调用相同的方法,只是SQL指令不一样 public int add(Grade g) { String sql = "insert into grade values(null,?)"; return jdbcTemplate.update(sql, g.getGradeName()); } } |