码迷,mamicode.com
首页 > 编程语言 > 详细

Spring的DAO模块

时间:2016-05-07 22:15:36      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

Spring的DAO模块提供了对JDBC、Hibernate、JDO等DAO层支持。

DAO模块依赖 commons-pool.jar、commons-collections.jar

技术分享
package com.dao;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.support.JdbcDaoSupport;

public class IPeopleDaoImpl extends JdbcDaoSupport implements IPeopleDao{

    public void initDatabase(){//创建表
        String sql="create table People(" +
                "id int primary key auto_increment," +
                "name varchar(100) not null," +
                "age int,"+
                "sex varchar(10)," +
                "birthday DateTime)";
        getJdbcTemplate().execute(sql);
    }
    
    
    
    
    
    
    
    
    public void addPeople(People people) {
        String sql="insert into people(name,sex,age,birthday)" +
                "values(?,?,?,?)";
        getJdbcTemplate().update(
                sql,new Object[]{
                        people.getName(),people.getSex(),people.getAge(),people.getBirthday()
                        });
    }

    public int getPeopleCount() {
        String sql="select count(*) from people";
        int count=getJdbcTemplate().queryForInt(sql);
        return count;
    }

    public String getPeopleName(int id) {
        String sql="select name from people where id="+id;
        String name=getJdbcTemplate().queryForObject(sql, String.class);
        return name;
    }

    public List<People> listPeoples() {
        String sql="select * from people";
        List<Map<String,Object>> list=getJdbcTemplate().queryForList(sql);
        List<People> peopleList=new ArrayList<People>();
        
        for(Map<String,Object> row: list){
            People people=new People();
            people.setId((Integer)row.get("id"));
            people.setName((String)row.get("name"));
            people.setSex((String)row.get("sex"));
            people.setBirthday((Date)row.get("birthday"));
            people.setAge((Integer)row.get("age"));
            peopleList.add(people);
        }
        return peopleList;
    }

}


<?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:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    
    <!--<bean id="aopMethodBeforeInterceptor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
        <property name="advice">
            <bean class="com.aop.MethodBeforeInterceptor"></bean>
        </property>
        <property name="mappedName" value="withAop"></property>
    </bean>
    
    --><!--<bean id="aopMethodAfterInterceptor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
        <property name="advice">
            <bean class="com.aop.MethodAfterInterceptor">
            </bean>
        </property>
        <property name="mappedName" value="withAop"></property>
    </bean>
    -->
    
    <!--<bean id="aopMethodAfterInterceptor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
        <property name="advice">
            <bean class="com.aop.MethodAfterInterceptor">
            </bean>
        </property>
        <property name="patterns">
            <list>
                <value>.*withAop</value>
                <value>.*like.*</value>
            </list>
        </property>
    </bean>
    
    <bean id="aopThrowsInterceptor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
        <property name="advice">
            <bean class="com.aop.ThrowsInterceptor"></bean>
        </property>
        <property name="mappedName" value="withAop"></property>
    </bean>
    
    --><!--  Service对象,安装到ProxyFactoryBean对象中 -->
    <!--<bean id="aopService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="interceptorNames">
            <list>
                <value>aopMethodBeforeInterceptor</value>
                <value>aopMethodAfterInterceptor</value>
                <value>aopThrowsInterceptor</value>
            </list>
        </property>
        <property name="target">
            <bean class="com.aop.AopServiceImpl">
                <property name="name" value="sss"></property>
            </bean>            
        </property>
    </bean>
-->
    <bean id="configproperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="location" value="jdbc.properties"/>
   </bean>
    
   <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
           <property name="properties" ref="configproperties"/>
   </bean>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="driverClassName" value="${jdbc.driver}" />
    </bean>
    <!--<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
        <property name="url" value="jdbc:mysql://localhost:3306/test_1?characterEncoding=UTF-8" />
        <property name="username" value="guodaxia" />
        <property name="password" value="guodaxia" />
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    </bean>
    
    --><bean id="peopleDao" class="com.dao.IPeopleDaoImpl" depends-on="dataSource" >
        <property name="dataSource" ref="dataSource" />
    </bean>
    
    
    
    

</beans>

package com.dao;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.support.JdbcDaoSupport;

public class IPeopleDaoImpl extends JdbcDaoSupport implements IPeopleDao{

    public void initDatabase(){//创建表
        String sql="create table People(" +
                "id int primary key auto_increment," +
                "name varchar(100) not null," +
                "age int,"+
                "sex varchar(10)," +
                "birthday DateTime)";
        getJdbcTemplate().execute(sql);
    }
    
    
    
    
    
    
    
    
    public void addPeople(People people) {
        String sql="insert into people(name,sex,age,birthday)" +
                "values(?,?,?,?)";
        getJdbcTemplate().update(
                sql,new Object[]{
                        people.getName(),people.getSex(),people.getAge(),people.getBirthday()
                        });
    }

    public int getPeopleCount() {
        String sql="select count(*) from people";
        int count=getJdbcTemplate().queryForInt(sql);
        return count;
    }

    public String getPeopleName(int id) {
        String sql="select name from people where id="+id;
        String name=getJdbcTemplate().queryForObject(sql, String.class);
        return name;
    }

    public List<People> listPeoples() {
        String sql="select * from people";
        List<Map<String,Object>> list=getJdbcTemplate().queryForList(sql);
        List<People> peopleList=new ArrayList<People>();
        
        for(Map<String,Object> row: list){
            People people=new People();
            people.setId((Integer)row.get("id"));
            people.setName((String)row.get("name"));
            people.setSex((String)row.get("sex"));
            people.setBirthday((Date)row.get("birthday"));
            people.setAge((Integer)row.get("age"));
            peopleList.add(people);
        }
        return peopleList;
    }

}

package com.dao;

import java.util.List;

public interface IPeopleDao {
    public String getPeopleName(int id);
    public void addPeople(People people);
    public int getPeopleCount();
    public List<People> listPeoples();

}

package com.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

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

import com.dao.IPeopleDao;
import com.dao.People;

public class TestDao {
    
    /*public static void main(String[] args){
        String time="2011-12-07";
        System.out.println(TransactToDate(time).toLocaleString());
    }*/
    
    public static void main(String[] args){
        Test1();
    }
    
    
    public static void Test1(){
        ApplicationContext con=new ClassPathXmlApplicationContext("applicationContext.xml");
        IPeopleDao personDao=(IPeopleDao) con.getBean("peopleDao");
        
        /*People p=new People();
        p.setName("Helloween");
        p.setSex("男");
        p.setAge(12);
        p.setBirthday(TransactToDate("2005-12-3"));
        personDao.addPeople(p);*/
        System.out.println(personDao.getPeopleCount());
        List<People> peo=personDao.listPeoples();
        System.out.println(peo.get(0).getName());
        }
    
    public static Date TransactToDate(String d) {
         String pattern = "yyyy-MM-dd";
         SimpleDateFormat df = new SimpleDateFormat(pattern);
         Date date=null;
        try {
            date = df.parse(d);
        } catch (ParseException e) {
            e.printStackTrace();
        }
         return date;
    }

}
View Code

解析例子:

DaoImpl继承JdbcDaoSupport类

JdbcDaoSupport中有一个dataSource变量,在配置文件中配置数据源的值,使用getJdbcTemplate()获取JdbcTemplate对象,使用JdbcTemplate对象操作数据库

我这里用到的几个方法:

getJdbcTemplate().execute(sql);//我这里用来建表

getJdbcTemplate().update(
                sql,new Object[]{
                        people.getName(),people.getSex(),people.getAge(),people.getBirthday()
                        });//执行update操作,并在sql语句中使用了?通配符使用数组赋值

getJdbcTemplate().queryForInt(sql);//查询操作返回int值

getJdbcTemplate().queryForObject(sql, String.class);//将查询的结果转化成对象

getJdbcTemplate().queryForList(sql);//将查询的结构转化成结果集的List集合

Spring的DAO模块

标签:

原文地址:http://www.cnblogs.com/aigeileshei/p/5469238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!