zoukankan      html  css  js  c++  java
  • 6、spring数据库操作

    1.目录结构:

    2.数据表结构:

    3.代码如下:

    Person.java

    package db.entity;

    public class Person {

        private String username;

        private String password;

        public Person(){}

        

        public Person(String username) {

            this.username = username;

        }

        

        public String getUsername() {

            return username;

        }

        public void setUsername(String username) {

            this.username = username;

        }

        public String getPassword() {

            return password;

        }

        public void setPassword(String password) {

            this.password = password;

        }

    }

    PersonService.java

    package db.service;

    import java.util.List;

    import db.entity.Person;

    public interface PersonService {

        public void save(Person person);

        public void update(Person person);

        public Person getPerson(String username);

        public List<Person> getPersons();

        public void delete(String uersname);

    }

    PersonServiceBean.java

    package db.service.impl;

    import java.util.List;

    import javax.sql.DataSource;

    import org.springframework.jdbc.core.JdbcTemplate;

    import org.springframework.transaction.annotation.Transactional;

    import db.entity.Person;

    import db.service.PersonService;

    @Transactional

    public class PersonServiceBean implements PersonService {

        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 s1 (username, password) values(?, ?)", new Object[] {person.getUsername(), person.getPassword()},

                    new int[] {java.sql.Types.VARCHAR, java.sql.Types.VARCHAR});

        }



        @Override

        public void update(Person person) {

            jdbcTemplate.update("update s1 set password=? where username=?", new Object[]{person.getPassword(), person.getUsername()},

                    new int[]{java.sql.Types.VARCHAR, java.sql.Types.VARCHAR});

        }



        @SuppressWarnings("unchecked")

        @Override

        public Person getPerson(String username) {

            return (Person) jdbcTemplate.queryForObject("select * from s1 where username=?", new Object[]{username},

                    new int[] {java.sql.Types.VARCHAR}, new PersonRowManager());

        }



        @SuppressWarnings("unchecked")

        @Override

        public List<Person> getPersons() {

            // TODO Auto-generated method stub

            return (List<Person>) jdbcTemplate.query("select * from s1", new PersonRowManager());

        }



        @Override

        public void delete(String uersname) {

            jdbcTemplate.update("delete from s1 where username=?", new Object[]{uersname},

                    new int[]{java.sql.Types.VARCHAR});

        }



    }

    PersonRowManager.java

    package db.service.impl;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import org.springframework.jdbc.core.RowMapper;

    import db.entity.Person;



    public class PersonRowManager implements RowMapper{



        @Override

        public Object mapRow(ResultSet rs, int index) throws SQLException {

            // TODO Auto-generated method stub

            Person person = new Person(rs.getString("username"));

            person.setPassword(rs.getString("password"));

            return person;

        }

        

    }

    PersonServiceBeanTest.java

    package db.junit;



    import static org.junit.Assert.*;



    import org.junit.After;

    import org.junit.Before;

    import org.junit.Test;

    import org.springframework.context.ApplicationContext;

    import org.springframework.context.support.ClassPathXmlApplicationContext;



    import db.entity.Person;

    import db.service.PersonService;



    public class PersonServiceBeanTest {

        

        private PersonService personService;



        @Before

        public void setUp() throws Exception {

            try {

                ApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");

                personService = (PersonService) cxt.getBean("personService");

            } catch (RuntimeException e) {

                e.printStackTrace();

            }

        }



        @After

        public void tearDown() throws Exception {

        }



        @Test

        public void testSetDataSource() {

            fail("Not yet implemented");

        }



        @Test

        public void testSave() {

            Person person = new Person("wxt");

            person.setPassword("3546832");

            System.out.println(person.getUsername() + "   " + person.getPassword());

            personService.save(person);

        }



        @Test

        public void testUpdate() {

            Person person = new Person("zmp");

            person.setPassword("changed");

            personService.update(person);

        }



        @Test

        public void testGetPerson() {

            Person person = personService.getPerson("zmp");

            System.out.println(person.getUsername());

        }



        @Test

        public void testGetPersons() {

            for(Person person : personService.getPersons()){

                System.out.println(person.getUsername());

            }

        }

        @Test

        public void testDelete() {

            personService.delete("zmpandzmp");

        }

    }

    4.配置如下:

    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:context="http://www.springframework.org/schema/context" 

           xmlns:aop="http://www.springframework.org/schema/aop"

           xmlns:tx="http://www.springframework.org/schema/tx"

           xsi:schemaLocation="http://www.springframework.org/schema/beans

               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

               http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"
    >



         <context:property-placeholder location="classpath:jdbc.properties"/>

         <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

            <property name="driverClassName" value="${driverClassName}"/>

            <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}"/>

             <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->

             <property name="maxIdle" value="${maxIdle}"/>

             <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->

             <property name="minIdle" value="${minIdle}"/>

         </bean>



        <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

             <property name="dataSource" ref="dataSource"/>

        </bean>

        <tx:annotation-driven transaction-manager="txManager"/>

        

        <bean id="personService" class="db.service.impl.PersonServiceBean">

            <property name="dataSource" ref="dataSource"/>

        </bean>

    </beans>

    jdbc.properties

    driverClassName=org.gjt.mm.mysql.Driver

    url=jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF-8

    username=root

    password=123456

    initialSize=1

    maxActive=500

    maxIdle=2

    minIdle=1

    5.运行结果如下(只测试getPersons()方法):

    与数据库的内容比较:





  • 相关阅读:
    10个大数据领域的杰出公司
    面向对象下面几步
    $response->decoded_content; 和$response->content; 乱码问题
    netty新建连接并发数很小的case
    与eclipse集成的管理zookeeper工具
    zookeeper集群搭建
    用 Flask 来写个轻博客 (22) — 实现博客文章的添加和编辑页面
    perl 对象
    业务人员自助BI分析不够用,还要自助数据准备?
    业务人员自助BI分析不够用,还要自助数据准备?
  • 原文地址:https://www.cnblogs.com/zmpandzmp/p/3648818.html
Copyright © 2011-2022 走看看