Java开发之Spring连接数据库方法实例分析

本文实例讲述了Java开发之Spring连接数据库方法。分享给大家供大家参考,具体如下:
接口:

package cn.com.service;
import java.util.List;
import cn.com.bean.PersonBean;
public interface PersonService {
 //保存
 public void save(PersonBean person);
 //更新
 public void update(PersonBean person);
 //获取person
 public PersonBean getPerson(int id);
 public List<PersonBean> getPersonBean();
 //删除记录
 public void delete(int personid);
}

Person Bean类:

package cn.com.bean;
public class PersonBean {
 private int id;
 private String name;
 public PersonBean(String name) {
  this.name=name;
 }
 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;
 }
}

接口实现:

package cn.com.service.impl;
import java.util.List;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import cn.com.bean.PersonBean;
import cn.com.service.PersonService;
public class PersonServiceImpl implements PersonService {
 private JdbcTemplate jdbcTemplate;
 public void setDataSource(DataSource dataSource) {
  this.jdbcTemplate = new JdbcTemplate(dataSource);
 }
 @Override
 public void save(PersonBean person) {
  // TODO Auto-generated method stub
  jdbcTemplate.update("insert into person(name) values(?)", new Object[]{person.getName()},
    new int[]{java.sql.Types.VARCHAR});
 }
 @Override
 public void update(PersonBean person) {
  // TODO Auto-generated method stub
  jdbcTemplate.update("update person set name=? where id=?", new Object[]{person.getName(),person.getId()},
    new int[]{java.sql.Types.VARCHAR,java.sql.Types.INTEGER});
 }
 @Override
 public PersonBean getPerson(int id) {
  // TODO Auto-generated method stub
  return (PersonBean)jdbcTemplate.queryForObject("select * from person where id=?", new Object[]{id},
    new int[]{java.sql.Types.INTEGER},new PersonRowMapper() );
 }
 @SuppressWarnings("unchecked")
 @Override
 public List<PersonBean> getPersonBean() {
  // TODO Auto-generated method stub
  return (List<PersonBean>)jdbcTemplate.query("select * from person",
    new PersonRowMapper() );
 }
 @Override
 public void delete(int personid) {
  // TODO Auto-generated method stub
  jdbcTemplate.update("delete from person where id=?", new Object[]{personid},
    new int[]{java.sql.Types.INTEGER});
 }
}

RowMapper:

package cn.com.service.impl;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;
import cn.com.bean.PersonBean;
public class PersonRowMapper implements RowMapper {
 @Override
 public Object mapRow(ResultSet rs, int index) throws SQLException {
  // TODO Auto-generated method stub
  PersonBean person =new PersonBean(rs.getString("name"));
  person.setId(rs.getInt("id"));
  return person;
 }
}

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-2.5.xsd
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
   ">
    <!-- <context:property-placeholder location="classpath:jdbc.properties"/> -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/wy"/>
    <property name="username" value="root"/>
    <!-- property池启动时的初始值 -->
     <property name="password" value="123"/>
     <!-- 连接name="initialSize" value="${initialSize}"/>-->
     <property name="initialSize" value="1"/>
     <!-- 连接池的最大值 -->
     <property name="maxActive" value="500"/>
     <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
     <property name="maxIdle" value="2"/>
     <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
     <property name="minIdle" value="1"/>
    </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="cn.com.service.impl.PersonServiceImpl">
    <property name="dataSource" ref="dataSource"></property>
    </bean>
</beans>

测试类:

package Junit.test;
import static org.junit.Assert.*;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.com.bean.PersonBean;
import cn.com.service.PersonService;
public class PersonTest2 {
 private static PersonService personService;
 @BeforeClass
 public static void setUpBeforeClass() throws Exception {
 ApplicationContext act=new ClassPathXmlApplicationContext("beans.xml");
 personService=(PersonService) act.getBean("personService");
 }
 @Test
 public void save() {
 personService.save(new PersonBean("wyy"));
 }
 @Test
 public void update() {
 PersonBean person=personService.getPerson(1);
 person.setName("wy");
 personService.update(person);
 }
 @Test
 public void getPerson() {
 PersonBean person=personService.getPerson(1);
 System.out.println(person.getName());
 }
 @Test
 public void delete() {
 personService.delete(1);
 }
}

数据库:

Create Table
CREATE TABLE `person` (
 `id` int(11) NOT NULL auto_increment,
 `name` varchar(10) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

希望本文所述对大家Java程序设计有所帮助。

(0)

相关推荐

  • 通过代理类实现java连接数据库(使用dao层操作数据)实例分享

    首先,我们在一个java文件中定义要存储的结构类型: 复制代码 代码如下: import java.util.Date ;/** * * @author Nero */public class Emp {    private int empno ;    private String ename ;    private String job ;    private Date hiredate ;    private float sal ;    public void setEmpno(

  • Java编程中使用JDBC API连接数据库和创建程序的方法

    JDBC连接数据库 涉及到建立一个JDBC连接的编程是相当简单的.下面是这些简单的四个步骤: 导入JDBC包: 添加import语句到Java程序导入所需的类在Java代码中. 注册JDBC驱动程序:这一步会导致JVM加载所需的驱动程序实现到内存中,因此它可以实现JDBC请求. 数据库URL制定:这是创建格式正确的地址指向到要连接的数据库. 创建连接对象:最后,代码调用DriverManager对象的getConnection()方法来建立实际的数据库连接. 导入JDBC包: import 语句

  • Java程序连接数据库的常用的类和接口介绍

    编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中用于管理数据库驱动程序的类.通常,应用程序只使用类DriverManager的getConnection()静态方法,用来建立与数据库的连接,返回Connection对象: static Connection getConnection(String url,String username,Stri

  • Java使用JDBC连接数据库的实现方法

    本文实例讲述了Java使用JDBC连接数据库的实现方法,是Java数据库程序设计里非常实用的重要技巧.分享给大家供大家参考.具体如下: JDBC(Java Data Base Connectivity)数据库连接,通常我们在编写web应用或java应用程序要连接数据库时就要使用JDBC.使用JDBC连接数据库一般步骤有: 1.加载驱动程序 Class.forName(driver); 2.创建连接对象 Connection con = DriverManager.getConnection(ur

  • java连接数据库增、删、改、查工具类

    java连接数据库增.删.改.查工具类 数据库操作工具类,因为各厂家数据库的分页条件不同,目前支持Mysql.Oracle.Postgresql的分页查询在Postgresql环境测试过了,其他数据库未测试.sql语句需要使用预编译形式的 复制代码 代码如下: package db; import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.R

  • java开发中基于JDBC连接数据库实例总结

    本文实例讲述了java开发中基于JDBC连接数据库的方法.分享给大家供大家参考,具体如下: 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String  className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }c

  • java使用jdbc连接数据库工具类和jdbc连接mysql数据示例

    这个工具类使用简单,实例化直接调用就可以了,大家还可以方便的根据自己的需要在里面增加自己的功能 复制代码 代码如下: package com.lanp.ajax.db; import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException; /** * 连接数据库的工具类,被定

  • 完整java开发中JDBC连接数据库代码和步骤

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoundException e){ Sys

  • Java连接数据库步骤解析(Oracle、MySQL)

    1.java连接Oracle数据库 使用以下代码三个步骤: 下载ojdbc.jar包并导入项目中. 将下面的代码放在你觉得它应该在的地方. 修改代码:将MyDbComputerNameOrIP改为Oracle数据库所在电脑的IP,将UserName,Password 改为之前定义的用户名和密码. 然后,就可以用喽. Connection connect = null; Class.forName("oracle.jdbc.driver.OracleDriver");//加入oracle

  • Java开发之Spring连接数据库方法实例分析

    本文实例讲述了Java开发之Spring连接数据库方法.分享给大家供大家参考,具体如下: 接口: package cn.com.service; import java.util.List; import cn.com.bean.PersonBean; public interface PersonService { //保存 public void save(PersonBean person); //更新 public void update(PersonBean person); //获取

  • java开发之spring webflow实现上传单个文件及多个文件功能实例

    本文实例讲述了java开发之spring webflow实现上传单个文件及多个文件功能.分享给大家供大家参考,具体如下: 上传单个文件 准备 1. 如果你项目中使用了spring security的话,参考上一篇文章,使用上篇的第二种方法,并去掉MultipartFilter(如果有配置的话),否则得不到文件 2. 流程中的变量(如用var标签定义的变量),都需要实现Serializable接口. 实现过程 在pom.xml文件中加入下列依赖: <!-- 支持文件上传 --> <depe

  • Java开发之spring security实现基于MongoDB的认证功能

    本文实例讲述了Java开发之spring security实现基于MongoDB的认证功能.分享给大家供大家参考,具体如下: spring security对基于数据库的认证支持仅限于JDBC,而很多项目并非使用JDBC,比如Nosql数据库很多使用的是 Mongo Java Driver,这样就无法用默认的<jdbc-user-service>进行支持认证. 如果项目不是使用JDBC,没么解决办法就是:自己定义一个认证服务. 新建一个CustomUserDetailsService类 这个类

  • java读取properties文件的方法实例分析

    本文实例讲述了java读取properties文件的方法.分享给大家供大家参考.具体分析如下: 1.不在项目中读取: Properties properties = new Properties(); BufferedReader read = new BufferedReader(new InputStreamReader(new FileInputStream("文件的路径"),"utf-8")); properties.load(read); properti

  • python开发之str.format()用法实例分析

    本文实例分析了python开发之str.format()用法.分享给大家供大家参考,具体如下: 格式化一个字符串的输出结果,我们在很多地方都可以看到,如:c/c++中都有见过 下面看看python中的字符串格式函数str.format(): #使用str.format()函数 #使用'{}'占位符 print('I\'m {},{}'.format('Hongten','Welcome to my space!')) print('#' * 40) #也可以使用'{0}','{1}'形式的占位符

  • Android开发之App widget用法实例分析

    本文实例讲述了Android开发之App widget用法.分享给大家供大家参考,具体如下: 放在桌面上的控件叫做--App widget,例如可以在桌面上添加按钮.图片等等控件,例如桌面播放器的控制面板 AppWidgetProviderInfo对象,它为App Widget提供元数据,包括布局.更新频率等等数据,这个对象不是由我们自己生成的,而是由android自己定义配置完成,这个对象被定义在XML文件中 1.定义AppWidgetProviderInfo对象,在res/xml文件夹当中定

  • Android开发之ImageSwitcher相册功能实例分析

    本文实例讲述了Android开发之ImageSwitcher相册功能.分享给大家供大家参考,具体如下: 简介: 1.ImageSwitcher是viewSwitcher的子类,所以ImageSwitcher继承了ViewSwitcher素有的特性 2.作为ViewSwitcher的子类,它比ViewSwitcher使用更加方便,主要体现在:①. 重写了setNext() ②. 重写了showPrevious()方法.所以其实用起来,要比ViewSwitcher更为方便. 3.中重要的是:Imag

  • Java正则匹配中文的方法实例分析

    本文实例讲述了Java正则匹配中文的方法.分享给大家供大家参考,具体如下: 1.匹配双引号间内容: public void test1() { // 匹配双引号间内容 String pstr = "\"([^\"]+)\""; Pattern p = Pattern.compile(pstr); Matcher m = p.matcher("\"goodjob\""); System.out.println(m.fi

  • Java正则验证IP的方法实例分析【测试可用】

    本文实例讲述了Java正则验证IP的方法.分享给大家供大家参考,具体如下: 网上用正则验证IP的表达式有很多,一搜一大堆,可以自己写,但很麻烦又费事,用别人写的难免有bug. 找了几个测试一下,不是有bug,就是连正确的IP也不认识了,好多还信誓旦旦,仿佛自己做过测试似的. 今天找到一个比较行的通的表达式,不过也有一个小的Bug(用*号时,不报错) package des; import java.util.regex.Matcher; import java.util.regex.Patter

  • java JSP开发之Spring中Bean的使用

    java JSP开发之Spring中Bean的使用 在传统的Java应用中,bean的生命周期很简单.使用Java关键字new进行bean实例化,然后bean就可以被使用了,一旦该bean不再使用,Java就自动进行垃圾回收.然而,在Spring中,bean的生命周期就比较复杂了.下面是一个bean装载到Spring应用上下文的过程: 如图所示:在你准备调用bean之前,bean工厂执行了若干启动步骤: 1.Spring对bean进行实例化: 2.Spring将值和bean的引用注入到bean对

随机推荐