Spring-JDBC+Spring整合开发

Spring+JDBC整合开发
Person.java:
/*
 *@Author swxctx
 *@time 2016年9月23日
 */
package com.sw.bean;

public class Person {
    private Integer id;
    private String name;
    
    public Person(String string){
        
    }
    
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
PersonService.java:
/*
 *@Author swxctx
 *@time 2016年9月23日
 */
package com.sw.service;
import java.util.List;

import com.sw.bean.*;
public interface PersonService {
    /**
     * 保存
     * @param person
     */
    public void save(Person person);
    
    /**
     * 更新
     * @param person
     */
    public void update(Person person);
    
    /**
     * 获取
     * @param personid
     * @return
     */
    public Person getPerson(int personid);
    
    /**
     * 获取所有person
     * @return
     */
    public List<Person> getPersons();
    
    /**
     * 删除
     * @param personid
     * @throws Exception
     */
    public void delete(int personid) throws Exception;
}
PersonServiceBean.java:
/*
 *@Author swxctx
 *@time 2016年9月23日
 */
package com.sw.serv.impl;

import java.util.List;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.transaction.annotation.Transactional;

import com.sw.bean.Person;
import com.sw.service.PersonService;

@Transactional
public class PersonServiceBean implements PersonService {
//    private DataSource dataSource;
    private JdbcTemplate jdbcTemplate;
    
    public void setDataSource(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    @Override
    public void save(Person person) {
        // TODO Auto-generated method stub
        //保存
        jdbcTemplate.update("insert into person(name) values(?)", new Object[]{person.getName()},
                new int[]{java.sql.Types.VARCHAR});
    }

    @Override
    public void update(Person person) {
        // TODO Auto-generated method stub
        //更新
        jdbcTemplate.update("update person set name=? where id=?", new Object[]{person.getName(),person.getId()},
                new int[]{java.sql.Types.VARCHAR,java.sql.Types.INTEGER});
    }

    @Override
    public Person getPerson(int personid) {
        // TODO Auto-generated method stub
        //查询
        return (Person)jdbcTemplate.query("select *form person where id=?", new Object[]{personid}, new PersonRowMapper());
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<Person> getPersons() {
        // TODO Auto-generated method stub
        //查询所有记录
        return (List<Person>)jdbcTemplate.query("select *form person",new PersonRowMapper());
    }

    @Transactional(rollbackFor=Exception.class)
    @Override
    public void delete(int personid) throws Exception {
        // TODO Auto-generated method stub
        //删除
        jdbcTemplate.update("delete person where id=?", new Object[]{personid},
                new int[]{java.sql.Types.VARCHAR,java.sql.Types.INTEGER});
                throw new Exception("运行期例外");
    }

}
PersonRowMapper.java:
/*
 *@Author swxctx
 *@time 2016年9月23日
 */
package com.sw.serv.impl;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.jdbc.core.RowMapper;

import com.sw.bean.Person;

public class PersonRowMapper implements RowMapper {

    @Override
    public Object mapRow(ResultSet rs, int index) throws SQLException {
        // TODO Auto-generated method stub
        Person person = new Person(rs.getString("name"));
        person.setId(rs.getInt("id"));
        return person;
    }

}
beans.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
         
         <!-- 配置数据源 -->
         <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF-8"/>
        <property name="username" value="root"/>
        <property name="password" value="0707"/>
         <!-- 连接池启动时的初始值 -->
         <property name="initialSize" value="1"/>
         <!-- 连接池的最大值 -->
         <property name="maxActive" value="500"/>
         <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
         <property name="maxIdle" value="2"/>
         <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
         <property name="minIdle" value="1"/>
  </bean>
 
  <!-- 采用注解方式配置事务 -->
  <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource"/>
  </bean>
 
 <!-- 采用@Transactional注解方式使用事务 -->
  <tx:annotation-driven transaction-manager="txManager"/>
 
  <bean id="personService" class="com.sw.serv.impl.PersonServiceBean">
      <!-- 注入数据源 -->
      <property name="dataSource" ref="dataSource"></property>
  </bean>
 
</beans>
测试类;
/*
 *@Author swxctx
 *@time 2016年9月23日
 */
package com.sw.junit;


import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


import com.sw.bean.Person;
import com.sw.service.PersonService;

public class PersonServiceTest {
    private static PersonService personService;
    
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        try {
            ApplicationContext ctx= new ClassPathXmlApplicationContext("beans.xml");
            personService = (PersonService)ctx.getBean("personService");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test
    public void save() {
        personService.save(new Person("swxctx"));
    }
    
    @Test
    public void getPerson(){
        Person person=personService.getPerson(1);
        System.out.println(person.getName());
    }
    
    @Test
    public void update(){
        Person person=personService.getPerson(1);
        person.setName("xc");
        personService.update(person);
    }
    
    @Test
    public void delete() throws Exception{
        personService.delete(1);
    }
    
    @Test
    public void getBeans(){
        for(Person person:personService.getPersons()){
            System.out.println(person.getName());
        }
    }
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值