`
jiangduxi
  • 浏览: 456667 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring JDBC 入门笔记

 
阅读更多
[size=medium][color=blue]  最近学了下Spring JDBC 这块,发现还是蛮有趣的。现在展示一个入门基本的实例吧!
第一步: create 一个table
引用

   CREATE TABLE Student(
   ID   INT NOT NULL AUTO_INCREMENT,
   NAME VARCHAR(20) NOT NULL,
   AGE  INT NOT NULL,
   PRIMARY KEY (ID)
);

第二步:引入spring的包。
第三步:编写一个实体类。Student 实体类
public class Student {
   private Integer age;
   private String name;
   private Integer id;

   public void setAge(Integer age) {
      this.age = age;
   }
   public Integer getAge() {
      return age;
   }

   public void setName(String name) {
      this.name = name;
   }
   public String getName() {
      return name;
   }

   public void setId(Integer id) {
      this.id = id;
   }
   public Integer getId() {
      return id;
   }
}

第四步。编写一个操作该实体的接口,StudentDao
public interface StudentDAO {

   public void setDataSource(DataSource ds);

   public void create(String name, Integer age);

   public Student getStudent(Integer id);

   public List<Student> listStudents();
  
   public void delete(Integer id);

   public void update(Integer id, Integer age);
}

第五步。编写一个Mapper类
public class StudentMapper implements RowMapper<Student> {
   public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
      Student student = new Student();
      student.setId(rs.getInt("id"));
      student.setName(rs.getString("name"));
      student.setAge(rs.getInt("age"));
      return student;
   }

第六步。编写一个实现StudentDao的类,这里就要用到SpringJDBC了。
public class StudentJDBCTemplate implements StudentDAO {
   private DataSource dataSource;
   private JdbcTemplate jdbcTemplateObject;
   
   public void setDataSource(DataSource dataSource) {
      this.dataSource = dataSource;
      this.jdbcTemplateObject = new JdbcTemplate(dataSource);
   }

   public void create(String name, Integer age) {
      String SQL = "insert into Student (name, age) values (?, ?)";
      
      jdbcTemplateObject.update( SQL, name, age);
      System.out.println("Created Record Name = " + name + " Age = " + age);
      return;
   }

   public Student getStudent(Integer id) {
      String SQL = "select * from Student where id = ?";
      Student student = jdbcTemplateObject.queryForObject(SQL, 
                        new Object[]{id}, new StudentMapper());
      return student;
   }

   public List<Student> listStudents() {
      String SQL = "select * from Student";
      List <Student> students = jdbcTemplateObject.query(SQL, 
                                new StudentMapper());
      return students;
   }

   public void delete(Integer id){
      String SQL = "delete from Student where id = ?";
      jdbcTemplateObject.update(SQL, id);
      System.out.println("Deleted Record with ID = " + id );
      return;
   }

   public void update(Integer id, Integer age){
      String SQL = "update Student set age = ? where id = ?";
      jdbcTemplateObject.update(SQL, age, id);
      System.out.println("Updated Record with ID = " + id );
      return;
   }

}

第七步。编写测试类
public class TestMainApp {
   public static void main(String[] args) {
      ApplicationContext context = 
             new ClassPathXmlApplicationContext("applicationContext.xml");

      StudentJDBCTemplate studentJDBCTemplate = 
      (StudentJDBCTemplate)context.getBean("studentJDBCTemplate");
      
      System.out.println("------Records Creation--------" );
      studentJDBCTemplate.create("Zara", 11);
      studentJDBCTemplate.create("Nuha", 2);
      studentJDBCTemplate.create("Ayan", 15);

      System.out.println("------Listing Multiple Records--------" );
      List<Student> students = studentJDBCTemplate.listStudents();
      for (Student record : students) {
         System.out.print("ID : " + record.getId() );
         System.out.print(", Name : " + record.getName() );
         System.out.println(", Age : " + record.getAge());
      }

      System.out.println("----Updating Record with ID = 2 -----" );
      studentJDBCTemplate.update(2, 20);

      System.out.println("----Listing Record with ID = 2 -----" );
      Student student = studentJDBCTemplate.getStudent(2);
      System.out.print("ID : " + student.getId() );
      System.out.print(", Name : " + student.getName() );
      System.out.println(", Age : " + student.getAge());
	  
   }
}

最后一步配置applicationContext文件
<?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:jdbc="http://www.springframework.org/schema/jdbc"
	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/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">
	
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<property name="driverClass" value="com.mysql.jdbc.Driver" />
	<!-- 测试数据库-->
	<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/test" />
	
	<property name="maxPoolSize" value="30" />
	<property name="minPoolSize" value="5" />
	<property name="idleConnectionTestPeriod" value="60" />
	<property name="acquireIncrement" value="5" />
	<property name="maxStatements" value="300" />
	<property name="properties">
		<props>
			<prop key="user">root</prop>
			<prop key="password">password</prop>
		</props>
	</property>
</bean>	

<!-- Definition for studentJDBCTemplate bean -->
<bean id="studentJdbcTempalte" class="com.spring.jdbc.example.lession1.JdbcTemplate.StudentJDBCtemplate">
	<property name="dataSource" ref="dataSource"/>
</bean>

</beans>

现在就可以简单的使用Spring jdbc 进行CRUD操作了。
注意这样用DateSource,其实可以直接通过配置Spring jdbcTemplate来实现。这样通过加载配置文件就可以使用到jdbcTemplate。我上面是使用DataSource。
如果直接使用jdbcTemplate的话,配置及可以写成
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
	<constructor-arg ref="dataSource" />
</bean>
<bean id="studentJdbcTempalte" com.spring.jdbc.example.lession1.JdbcTemplate.StudentJDBCtemplate">
	<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>

两种不同的引人其实都一样的效果。[/color][/size]
分享到:
评论

相关推荐

    spring入门笔记

    **Spring 框架概述** Spring 是一个开源的 Java 应用框架,它以其轻量级、模块化和面向切...希望这篇入门笔记能为你开启 Spring 的探索之旅,欢迎在学习过程中发现错误或有任何疑问时,通过博主的博客进行交流和指正。

    SSM模式学习路线-----[Spring入门笔记](csdn)————程序.pdf

    【Spring入门笔记】主要介绍了Spring框架的基础知识,包括Spring的核心概念、Bean的配置与作用域、依赖注入、SpringAop和SpringJdbc,以及事务声明。以下是对这些知识点的详细说明: 1. **什么是Spring?** Spring...

    Java Spring框架学习笔记(内附源码).pdf

    在本次的Java Spring框架学习笔记中,将对Spring框架的核心概念进行详细解析,包括Spring的 IOC(控制反转)、AOP(面向切面编程)、jdbcTemplate、事务管理、Spring5新特性以及与Mybatis的整合。本学习笔记提供了...

    Spring入门笔记.pdf

    Spring事务管理的核心接口是PlatformTransactionManager,Spring为不同数据访问技术提供了具体的事务管理实现,如JDBC、Hibernate、JPA等。Spring事务管理还提供了传播行为和隔离级别等事务属性配置,以满足不同业务...

    Spring初学者入门教程 PDF带书签高清版

    6. **数据访问**:Spring对各种数据访问技术的支持,如JDBC、Hibernate、MyBatis等,以及Spring Data JPA和Spring Data MongoDB等高级特性的使用。 7. **Spring Boot**:Spring Boot简化了Spring应用的创建和运行,...

    J2EE框架_笔记_b

    4-Struts入门笔记 005_Struts+DAO登陆 6-Struts标签-BEAN标签笔记 7-Struts标签 -LOGIC标签笔记 8-Struts标签- HTML标签笔记 9-Struts高级部分(1)(解决重复提交、上传组件)笔记 10-Struts高级部分(2)(常用Action...

    spring个人学习笔记

    Spring是一个全栈的Java/Java EE框架,它提供了从基础的IoC容器到高级应用如Spring MVC、Spring JDBC以及事务管理等全面的解决方案。IoC使得开发者能够将应用程序的控制权交由Spring管理,从而降低了组件之间的耦合...

    J2EE三大框架_笔记_a

    4-Struts入门笔记 005_Struts+DAO登陆 6-Struts标签-BEAN标签笔记 7-Struts标签 -LOGIC标签笔记 8-Struts标签- HTML标签笔记 9-Struts高级部分(1)(解决重复提交、上传组件)笔记 10-Struts高级部分(2)(常用Action...

    J2EE框架_笔记_c

    4-Struts入门笔记 005_Struts+DAO登陆 6-Struts标签-BEAN标签笔记 7-Struts标签 -LOGIC标签笔记 8-Struts标签- HTML标签笔记 9-Struts高级部分(1)(解决重复提交、上传组件)笔记 10-Struts高级部分(2)(常用Action...

    Spring 入门教程资料(源码源代码及课程笔记)

    本入门教程资料是针对初学者和求职者设计的,旨在帮助他们快速掌握 Spring 的基础和关键概念。 在提供的压缩包文件中,我们看到包含了一些以日期或课程编号命名的文件夹,比如 "6-09"、"6-13"、"6-07spring"、"6-08...

    Spring&Mybatis&SpringMVC总结笔记-最全最基础.pdf

    本总结笔记是Spring、Mybatis、SpringMVC的综合学习资源,涵盖了这些框架的基本概念、配置方式、优点与适用场景,以及它们各自组件和功能点的详细解释。适用于初学者入门学习,同时也可以作为面试时的参考资料,帮助...

    spring教程,spring入门

    Spring框架是Java开发中的一个核心框架,以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP...通过Spring教程和笔记,你可以深入理解并运用这些知识,提升你的Java开发能力。

    Spring体系框架入门.zip

    Spring框架是Java开发中的核心组件,它为应用程序提供了一个全面的基础设施,支持bean的依赖注入、面向切面编程(AOP)...通过阅读"Spring笔记整理",你将能更深入地理解Spring的每个组件,并能在实际项目中熟练运用。

    javaEE框架笔记,识货人下

    4-Struts入门笔记.pdf 44登陆案例(Struts+DAO+Hibernate)笔记.pdf 45-Struts+Hibernate完成分页笔记.pdf 46-Spring入门.pdf 47-Spring_IOC-v(上)笔记.pdf 47Spring_IOC(下)笔记.pdf 48Spring_AOP笔记.pdf 49-...

    学习spring时的笔记

    通过以上内容,我们可以了解到Spring的基本概念、优势和入门实践。随着学习深入,Spring的更多高级特性,如Spring Boot、Spring Data、Spring Security等,都会进一步提升开发效率和应用的健壮性。

    java SSH框架架构学习_笔记.struts,spring,hibernate. IOC,AOP,JDBC,编写个留言管理系统网站

    在`13-Hibernate入门(上)笔记.pdf`至`19-Hibernate实体层设计笔记.pdf`中,详细介绍了Hibernate的配置、实体类的创建、映射文件的编写、HQL(Hibernate Query Language)的使用,以及如何处理复合主键等复杂情况。...

    韩顺平spring笔记及PPT资料

    Spring的另一个重要模块是数据访问/集成层,它提供了对JDBC、ORM(Object-Relational Mapping)框架如Hibernate、MyBatis的支持。通过DataSource的配置,我们可以方便地管理数据库连接,使用JdbcTemplate或...

    狂神说上课笔记未删减 Java基础到技术升级

    15、MySQL和JDBC 16、前端:Html5 17、前端:CSS3 18、前端:JavaScript、jQuery 19、JavaWeb 20、MyBatis 21、Spring 22、SpringMVC 23、大前端串讲 24、Vue精讲 25、SpringBoot入门及原理 26、...

    spring入门

    “spring入门笔记源码.rar”可能包含了与教程对应的示例代码,读者可以下载并跟随代码实践,以加深理解和掌握。 总的来说,Spring入门的学习涵盖了一系列Java企业级开发的关键技能,从基础的框架配置到复杂的业务...

Global site tag (gtag.js) - Google Analytics