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

Spring数据访问层Dao案例

时间:2015-06-06 00:23:19      阅读:824      评论:0      收藏:0      [点我收藏+]

标签:

本文描述的是通过spring框架实现数据持久化操作,具体内容如下:

1,POJO类定义:

 1 import java.io.Serializable;
 2 import java.util.Date;
 3 
 4 public class User implements Serializable{
 5     private int userId;
 6 
 7     private String userName;
 8 
 9     private String password;
10 
11     private int credits;
12 
13     private String lastIp;
14 
15     private Date lastVisit;
16 
17     public String getLastIp() {
18         return lastIp;
19     }
20 
21     public void setLastIp(String lastIp) {
22         this.lastIp = lastIp;
23     }
24 
25     public Date getLastVisit() {
26         return lastVisit;
27     }
28 
29     public void setLastVisit(Date lastVisit) {
30         this.lastVisit = lastVisit;
31     }
32 
33     public int getUserId() {
34         return userId;
35     }
36 
37     public void setUserId(int userId) {
38         this.userId = userId;
39     }
40 
41     public String getUserName() {
42         return userName;
43     }
44 
45     public void setUserName(String userName) {
46         this.userName = userName;
47     }
48 
49     public String getPassword() {
50         return password;
51     }
52 
53     public void setPassword(String password) {
54         this.password = password;
55     }
56 
57     public int getCredits() {
58         return credits;
59     }
60 
61     public void setCredits(int credits) {
62         this.credits = credits;
63     }
64 }

2,数据访问层定义:

技术分享
import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.stereotype.Repository;

@Repository
public class UserDao {
    
    @Autowired
    private JdbcTemplate jdbcTemplate;


    public int getMatchCount(String userName, String password) {
        String sqlStr = " SELECT count(*) FROM t_user "
                + " WHERE user_name =? and password=? ";
//        return jdbcTemplate.queryForInt(sqlStr, new Object[] { userName, password });
        return jdbcTemplate.queryForObject(sqlStr, new Object[] { userName, password },Integer.class);
    }

    public User findUserByUserName(final String userName) {
        String sqlStr = " SELECT user_id,user_name,credits "
                + " FROM t_user WHERE user_name =? ";
        final User user = new User();
        jdbcTemplate.query(sqlStr, new Object[] { userName },
                new RowCallbackHandler() {
                    public void processRow(ResultSet rs) throws SQLException {
                        user.setUserId(rs.getInt("user_id"));
                        user.setUserName(userName);
                        user.setCredits(rs.getInt("credits"));
                    }
                });
        return user;
    }

    public void updateLoginInfo(User user) {
        String sqlStr = " UPDATE t_user SET last_visit=?,last_ip=?,credits=? "
                + " WHERE user_id =?";
        jdbcTemplate.update(sqlStr, new Object[] { user.getLastVisit(),
                user.getLastIp(),user.getCredits(),user.getUserId()});
    }

    public void insertUserInfo() {
        String sqlStr = "insert into t_user(user_name,password)"
                + "values(‘liushaocun‘,‘405424‘)";
        jdbcTemplate.execute(sqlStr);
        
        
    }
}
View Code

3,spring配置文件applicationContext.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:p="http://www.springframework.org/schema/p"
    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/tx 
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
    
    <!-- 扫描类包,将标注Spring注解的类自动转化Bean,同时完成Bean的注入 -->
    <context:component-scan base-package="com.lsc.SpringJDBC"/>
    
    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" 
        p:driverClassName="com.mysql.jdbc.Driver"
        p:url="jdbc:mysql://localhost:3306/sampledb" 
        p:username="root"
        p:password="405424" />

    <!-- 配置Jdbc模板  -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
        p:dataSource-ref="dataSource" />
        
    <bean id="userDao" class="com.lsc.SpringJDBC.UserDao"/> 
    <!-- 配置事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        p:dataSource-ref="dataSource" />
        
    <!-- 通过AOP配置提供事务增强,让service包下所有Bean的所有方法拥有事务 -->
    <aop:config proxy-target-class="true">
        <aop:pointcut id="serviceMethod"
            expression=" execution(* com.lsc.SpringJDBC..*(..))" />
        <aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice" />
    </aop:config>
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*" />
        </tx:attributes>
    </tx:advice>
</beans>
View Code

4,spring的依赖文件pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.lsc</groupId>
  <artifactId>SpringJDBC</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>SpringJDBC</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.2.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>3.2.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.8.5</version>
    </dependency>
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>
  </dependencies>
</project>

5,数据库相关操作:

create database "sampledb";
DROP TABLE IF EXISTS `t_login_log`; CREATE TABLE `t_login_log` ( `login_log_id` int(100) NOT NULL, `user_id` int(100) DEFAULT NULL, `ip` varchar(23) DEFAULT NULL, `login_datetime` datetime DEFAULT NULL, PRIMARY KEY (`login_log_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of t_login_log -- ---------------------------- -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `user_id` int(100) DEFAULT NULL, `user_name` varchar(30) DEFAULT NULL, `credits` int(100) DEFAULT NULL, `password` varchar(32) DEFAULT NULL, `last_visit` datetime DEFAULT NULL, `last_ip` varchar(23) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

6,测试程序:

技术分享
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main(String[] args) {
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao dao = (UserDao) app.getBean("userDao");
        dao.insertUserInfo();
    }
    
}
View Code

 

Spring数据访问层Dao案例

标签:

原文地址:http://www.cnblogs.com/liusc0424/p/4555750.html

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