本篇文章给大家分享的是有关Spring怎样进行数据库编程,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

前言

先入门,把核心理解后再回过头来看这些我觉得效果更好,不知道说的对不对,要是理解不当,还望指教。此篇为Spring的数据库编程,主要讲jdbcTemplate,让初学者直接上手。

数据库切入

数据库编程是互联网编程的基础,Spring框架为开发者提供了JDBC模板模式,即jdbcTemplate,它可以简化许多代码,需要提醒的是jdbcTemplate在实际应用中并不常用,但我觉得对新手来说苍蝇再小也是肉,要想往前走,就得把这些小肉先吃了。

Spring JDBC配置

使用Spring JDBC操作数据库,需要对其进行配置,配置如下

<!--配置spring-jdbcTemplate--><!--配置数据源--><beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!--MySQL数据库驱动--><propertyname="driverClassName"value="com.mysql.jdbc.Driver"></property><!--连接数据库的URL--><propertyname="url"value="jdbc:mysql://localhost:3306/bbb?useUnicode=true&amp;characterEncoding=UTF-8"></property><!--连接数据库的用户名--><propertyname="username"value="root"></property><!--连接数据库的密码--><propertyname="password"value="root"></property></bean><!--配置JDBC模板--><beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><propertyname="dataSource"ref="dataSource"></property></bean>

配置JDBC模板时需要将dataSource注入到jdbcTemplate,而在数据访问层(Dao类)需要使用jdbcTemplate时也需要将jdbc Template注入到对应的Bean中,我在这演示用最简单的注解注入

@Repository("userDao")publicclassUserDaoImplimplementsUserDao{@Autowired//使用配置文件中的JDBC模板privateJdbcTemplatejdbcTemplate;}

Spring Jdbc Template的常用方法

在上面我们获取了JDBC模板,下面我来说如何使用它。首先需要了解JdbcTemplate常用的方法,该类的常用方法是update和query.

1、public int update(String sql,Object args[])

该方法可以对数据表进行增加、修改、删除等操作。使用args[]设置SQL语句中的参数,并返回更新的行数。

示例如下:

publicvoidadd(){StringinsertSql="insertintouservalues(null,?,?)";Objectparem1[]={"成功","123456"};jdbcTemplate.update(insertSql,parem1);System.out.println("UserDao中的添加功能实现了");}

2、public List query(String sql,RowMapper rowMapper,Object args[])

该方法可以对数据表进行查询操作,rowMapper将结果集映射到用户自定义的类中(前提是自定义类中的属性要与数据表的字段对应)。

示例如下:

publicvoidquery(){StringselectSql="select*fromuser";RowMapper<User>rowMapper=newBeanPropertyRowMapper<User>(User.class);List<User>list=jdbcTemplate.query(selectSql,rowMapper,null);System.out.println("UserDao中的查询功能实现了");}

案例辅助

Pom.xml

<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><!--spring核心依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>5.1.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.1.5.RELEASE</version></dependency><!--日志相关--><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency></dependencies>

spring-config.xml

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--配置注解要扫描的包--><context:component-scanbase-package="com.my"></context:component-scan><mvc:annotation-driven></mvc:annotation-driven><!--将指定类TestDaoImpl配置给Spring,让Spring创建其实例--><beanid="testDIDao"class="com.my.dao.impl.TestDaoImpl"/><!--使用构造方法注入--><!--<beanid="testDIService"class="com.my.service.impl.TestServiceImpl">--><!--&lt;!&ndash;将TestDIDao注入到TestDIServiceImpl类的属性testDao上&ndash;&gt;--><!--<constructor-argindex="0"ref="testDIDao"/>--><!--</bean>--><!--使用setter方法注入--><beanid="testDIService"class="com.my.service.impl.TestServiceImpl"><!--调用TestDIServiceImpl类的setter方法,将TestDao注入到TestServiceImpl类的属性testDao上--><propertyname="testDao"ref="testDIDao"></property></bean><!--配置spring-jdbcTemplate--><!--配置数据源--><beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!--MySQL数据库驱动--><propertyname="driverClassName"value="com.mysql.jdbc.Driver"></property><!--连接数据库的URL--><propertyname="url"value="jdbc:mysql://localhost:3306/bbb?useUnicode=true&amp;characterEncoding=UTF-8"></property><!--连接数据库的用户名--><propertyname="username"value="root"></property><!--连接数据库的密码--><propertyname="password"value="root"></property></bean><!--配置JDBC模板--><beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><propertyname="dataSource"ref="dataSource"></property></bean><!--配置事务--><beanid="txManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><propertyname="dataSource"ref="dataSource"></property></bean><!--注册事务注解驱动--><tx:annotation-driventransaction-manager="txManager"></tx:annotation-driven></beans>

User

packagecom.my.pojo;publicclassUser{privateintid;privateStringusername;privateStringpassword;publicUser(){}publicUser(intid,Stringusername,Stringpassword){this.id=id;this.username=username;this.password=password;}publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}@OverridepublicStringtoString(){return"User{"+"id="+id+",username='"+username+'''+",password='"+password+'''+'}';}}

UserDao

packagecom.my.dao;publicinterfaceUserDao{publicvoidadd();publicvoiddelete();publicvoidupdate();publicvoidquery();}

UserDaoImpl

@Overridepublicvoidupdate(){StringupdateSql="updateusersetusername=?,password=?whereid=?";Objectparem3[]={"修改","654321",3};jdbcTemplate.update(updateSql,parem3);System.out.println("UserDao中的修改功能实现了");}@Overridepublicvoidquery(){StringselectSql="select*fromuser";RowMapper<User>rowMapper=newBeanPropertyRowMapper<User>(User.class);List<User>list=jdbcTemplate.query(selectSql,rowMapper,null);System.out.println("UserDao中的查询功能实现了");for(Useruser:list){System.out.println(user);}}}

测试Test3

packagecom.my.test;importcom.my.dao.UserDao;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTest3{@AutowiredprivateUserDaouserDao;publicstaticvoidmain(String[]args){ApplicationContextappCon=newClassPathXmlApplicationContext("spring-config.xml");//从容器中获取目标对象UserDaouserDao=(UserDao)appCon.getBean("userDao");//userDao.add();userDao.delete();userDao.update();userDao.query();}}

测试结果

以上就是Spring怎样进行数据库编程,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。