SpringData

传统方式访问数据库

1:创建一个Maven web项目

2:修改pom.xml为以下内容

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.gx</groupId>
  <artifactId>SpringData</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>SpringData Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>SpringData</finalName>
  </build>
</project>

3:创建一个数据库表User,包括id,name,age三个字段,并向其中添加数据

4:创建一个配置文件db.properties,用于存放所有和数据库有关的配置

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3307/test
jdbc.username=root
jdbc.password=root

5:开发一个JDBC相关工具类com.gx.help.JdbcUtil

package com.gx.help;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * 这是一个JDBC工具类
 * @author Administrator
 *
 *包含的内容
 *1:获取Connection
 *2:释放资源(关闭Connection,Statement(PrepareStatement),ResultSet)
 */
public class JdbcUtil {
    /**
     * 获取Connection
     * @return 返回所获得的JDBC的Connection
     * @throws SQLException
     * @throws ClassNotFoundException
     * @throws IOException
     */
    public static Connection getConnection() throws SQLException, ClassNotFoundException, IOException{
        //从配置文件获取数据
        InputStream inputStream = JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties");
        Properties properties = new Properties();
        properties.load(inputStream);
        //驱动程序名
        String driver=properties.getProperty("jdbc.driver");
        //url指向要访问的数据库名
        String url=properties.getProperty("jdbc.url");
        //MySQL配置时的用户名和密码
        String username=properties.getProperty("jdbc.username");
        String password=properties.getProperty("jdbc.password");
        Class.forName(driver);
        Connection conn = DriverManager.getConnection(url,username,password);
        return conn;
    }
    /**
     * 释放资源(使用Statement的情况下)
     * @param resultSet
     * @param statement
     * @param connection
     */
    public static void close(ResultSet resultSet,Statement statement,Connection connection){
        if(resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    /**
     * 释放资源(使用PrepareStatement的情况下)
     * @param resultSet
     * @param preparedStatement
     * @param connection
     */
    public static void close(ResultSet resultSet,PreparedStatement preparedStatement,Connection connection){
        if(resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(preparedStatement!=null){
            try {
                preparedStatement.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

5:创建对象模型com.gx.domain.User

package com.gx.domain;

public class User {
    private int id;
    private String name;
    private int age;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    }

}

6:创建Dao的接口com.gx.dao.UserDao

package com.gx.dao;

import java.util.List;

import com.gx.domain.User;
/**
 * UserDao访问接口
 * @author Administrator
 *
 */
public interface UserDao {
    //查询所有用户
    public List<User> finaAll();
}

7:创建Dao的实现类com.gx.dao.impl.UserDaoImpl

package com.gx.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.gx.dao.UserDao;
import com.gx.domain.User;
import com.gx.help.JdbcUtil;
/**
 * UserDao访问接口实现类,这个实现类通过最原始的JDBC的操作实现
 * @author Administrator
 *
 */
public class UserDaoImpl implements UserDao{
    /**
     * 查询所有学生
     */
    public List<User> finaAll(){
        List<User> users = new ArrayList<User>();
        Connection conn=null;
        PreparedStatement preparedStatement = null;
        ResultSet result = null;
        try {
            String sql = "select * from user";
            conn = JdbcUtil.getConnection();
            preparedStatement = conn.prepareStatement(sql);
            result = preparedStatement.executeQuery();
            while(result.next()){
                User user = new User();
                user.setId(result.getInt("id"));
                user.setName(result.getString("name"));
                user.setAge(result.getInt("age"));
                users.add(user);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            JdbcUtil.close(result, preparedStatement, conn);
        }
        return users;
    }
}

8:在JDBC相关工具类com.gx.help.JdbcUtil里面添加测试方法

    @Test
    public void testUserQuery(){
        UserDao udao = new UserDaoImpl();
        List<User> users = udao.finaAll();
        for(User user:users){
            System.out.println(user.toString());
        }
    }

9:运行测试类

10:添加save方法并测试

UserDao里面的代码

    //添加学生
    public void save(User user);

UserDaoImpl里面的代码

/**
     * 添加学生
     */
    public void save(User user){
        Connection conn=null;
        PreparedStatement preparedStatement = null;
        ResultSet result = null;
        try {
            String sql = "insert into user(id,name,age) value(?,?,?)";
            conn = JdbcUtil.getConnection();
            preparedStatement = conn.prepareStatement(sql);
            preparedStatement.setInt(1,user.getId());
            preparedStatement.setString(2,user.getName());
            preparedStatement.setInt(3,user.getAge());
            preparedStatement.executeUpdate();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            JdbcUtil.close(result, preparedStatement, conn);
        }
    }

JdbcUtilTest里面的代码

  @Test
    public void testUserSave(){
        UserDao udao = new UserDaoImpl();
        User user = new User();
        user.setAge(12);
        user.setId(6);
        user.setName("minuobaci");
        udao.save(user);
    }

测试结果

传统方式访问数据库的第二种方式(使用spring框架内置jdbc模板)

时间: 2024-10-17 13:27:05

SpringData的相关文章

SpringData,JPA,MongoDB,Solr,Elasticsearch底层逻辑关系

一: Spring-data底层的接口路基: spring-data : PagingAndSortingRepository-> CrudRepository-> Repository ,它是springdatajpa,solr,mongoDB,Elasticsearch的核心基础. 有三个主要的接口: 1. Repository<T, ID> {}空接口 2.CrudRepository<T, ID>extends Repository<T, ID> 主

SpringData系列一Spring Data的环境搭建

本节作为主要讲解Spring Data的环境搭建 JPA Spring Data :致力于减少数据访问层(DAO)的开发量.开发者唯一要做的就是声音持久层的接口,其他都交给Spring Data JPA来帮你完成! 使用Spring Data JPA进行持久层开发需要的四个步骤: 配置Spring 整合 JPA 在Spring配置文件中配置Spring Data,让Spring 为声明的接口创建代理对象.配置了<jpa:repositories>后,Spring 初始化容器时将会扫描base-

SpringData修改和删除操作

SpringData的查询我们已经学完了,我们现在就研究一下SpringData的修改和删除. @Modifying 注解和事务 @Query 与 @Modifying 这两个 annotation一起声明,可定义个性化更新操作,例如只涉及某些字段更新时最为常用,示例如下: //可以通过自定义的 JPQL 完成 UPDATE 和 DELETE 操作. 注意: JPQL 不支持使用 INSERT //在 @Query 注解中编写 JPQL 语句, 但必须使用 @Modifying 进行修饰. 以通

jpa+springdata

学习爱酷学习网尚硅谷springdata笔记: 1.在 Spring 配置文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:

使用Maven开发一个简单的SpringData

1:创建Maven项目 2:添加依赖(修改pom.xml为以下代码) <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/maven-v4_

Spring使用Hibernate和再加SpringData时配置的差别基于Java配置

只使用Spring+Hibernate 配置DataSource.LocalSessionFactoryBean.HibernateTransactionManager import java.util.Properties; import javax.sql.DataSource; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import

SpringData JPA查询分页demo

SpringData JPA 的 PagingAndSortingRepository接口已经提供了对分页的支持,查询的时候我们只需要传入一个 org.springframework.data.domain.Pageable 接口的实现类,指定PageNumber和pageSize即可 springData包中的 PageRequest类已经实现了Pageable接口,我们可以直接使用下边是部分代码: DAO: package com.jiaoyiping.jdjy.sourcecode.dao

springdata+maven配置和简单的操作

先上代码,后面再仔细分析spring-data pom.xml <dependency>   <groupId>org.springframework</groupId>   <artifactId>spring-webmvc</artifactId>   <version>4.3.0.Release</version> </dependency> <!-- spring data -->   &l

springdata整合mongodb一些方法包括or,and,regex等等《有待更新》

这几天接触mongodb以及springdata,自己英语比较戳,所以整理这些方法花的时间多了点,不过也是我第一次在外国网站整理技术 不多说,直接上代码,这里只是给出一些操作方法而已,如果有需要源码的,请Q我206314068,如转载请注明出处 1 package mongodbProject1; 2 3 import java.util.List; 4 5 import mg.pojo.User; 6 import mg.pojo.UserList; 7 import mg.service.U