1,Spring集成Jdbc,需要导入spring包和数据库驱动包,这里我们使用的是mysql驱动包
2,选择一个数据源(DBCP,C3P0),这里我们使用DBCP,需要导入DBCP驱动包
3,创建jdbc.properties文件,设置数据库的连接信息
3,在beans.xml中导入相应的properties文件
4,写相应的dao,并且为这个dao创建jdbcTemplate对象,它需要DataSource构造
--实体类:
package com.yangw.spring.model; 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; } /** * * create table t_user( id int auto_increment primary key , name varchar(50), age int ); */ }
--UserDao接口与实现类
package com.yangw.spring.dao; import java.util.List; import com.yangw.spring.model.User; public interface IUserDao { public void addUser(User user); public void delUser(int id); public User loadUser(int id); public List<User> loadAllUser(); }
package com.yangw.spring.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import javax.annotation.Resource; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.jdbc.support.KeyHolder; import org.springframework.jdbc.support.rowset.SqlRowSet; import org.springframework.stereotype.Repository; import com.yangw.spring.model.User; @Repository("userJdbcDao") public class UserDao implements IUserDao { private JdbcTemplate jdbcTemplate; @Resource //注入dataSoucre public void setDataSource(DataSource dataSource){ jdbcTemplate=new JdbcTemplate(dataSource); } @Override public void addUser(final User user) { //插入一条数据,但是自增的主键id没法得到 //jdbcTemplate.update("insert into t_user(name,age) values(?,?)",user.getName(),user.getAge()); final String sql="insert into t_user(name,age) values(?,?)"; //获取自增的key的方法 KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update( new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection conn) throws SQLException { PreparedStatement ps =conn.prepareStatement(sql,new String[]{"id"}); ps.setString(1, user.getName()); ps.setInt(2, user.getAge()); return ps; } }, keyHolder); System.out.println(keyHolder.getKey()); } @Override public void delUser(int id) { jdbcTemplate.update("delete from t_user where id=?",id); } @Override public User loadUser(int id) { String sql="select * from t_user where id=?"; return jdbcTemplate.queryForObject(sql, new Object[]{id}, new UserMapper()); } @Override public List<User> loadAllUser() { //获取记录数 String sql1="select count(*) from t_user"; int count=jdbcTemplate.queryForInt(sql1); System.out.println("count:"+count); //获取记录的一个字段值 String sql2="select name from t_user"; List<String> names=jdbcTemplate.queryForList(sql2, String.class); for(String name:names){ System.out.println("name--->"+name); } //获取记录的几个字段的值 String sql3="select name,age from t_user"; SqlRowSet sqlRowSet=jdbcTemplate.queryForRowSet(sql3); while(sqlRowSet.next()){ System.out.println("name--->"+sqlRowSet.getString("name")+"--age-->"+sqlRowSet.getInt("age")); } //获取所有记录 String sql="select * from t_user"; return jdbcTemplate.query(sql, new UserMapper()); } /** * 在多个地方用的话,建议写成内部类,而不是匿名内部类 * 如果在外部也会大量使用,建议写成独立的一个类 * @author Administrator * */ private class UserMapper implements RowMapper<User>{ @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user=new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); System.out.println(rowNum+"rowNum"); //rowNum是每次迭代的下标 return user; } } }
--测试类
package com.yangw.spring.test; import java.util.List; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.yangw.spring.dao.IUserDao; import com.yangw.spring.model.User; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("/beans.xml") /** * 当使用了@RunWith,@ContextConfiguration注解之后,就可以直接在Test中进行依赖注入 * @author Administrator */ public class TestJdbc { @Resource private IUserDao userJdbcDao; @Test public void testJdbc(){ User user=new User(); user.setName("lisi"); user.setAge(20); userJdbcDao.addUser(user); } @Test public void testLoadUser(){ User user=userJdbcDao.loadUser(1); System.out.println(user.getName()); } @Test public void testLoadAllUsers(){ List<User> users=userJdbcDao.loadAllUser(); System.out.println(users.size()); } }
--配置文件bean.xml
<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" 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/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!--1, 打开Spring的annotation --> <context:annotation-config/> <!-- 2, 设定Spring去那些包中找annotation --> <context:component-scan base-package="com.yangw.spring" /> <!-- 使用dbcp没有成功, 加的是commons-dbcp-1.4.jar class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 因此使用下面的spring框架提供的作了测试 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" > <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <context:property-placeholder location="jdbc.properties"/> </beans>
--jdbc.properties文件
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/spring_test jdbc.username=root jdbc.password=123456
Spring03-jdbc的更多相关文章
-
JAVAEE——spring03:spring整合JDBC和aop事务
一.spring整合JDBC 1.spring提供了很多模板整合Dao技术 2.spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术. JDBCTemplate => JDBC模 ...
-
Java数据库连接技术——JDBC
大家好,今天我们学习了Java如何连接数据库.之前学过.net语言的数据库操作,感觉就是一通百通,大同小异. JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力. JDBC API ...
-
玩转spring boot——结合AngularJs和JDBC
参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...
-
[原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率
使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?在JDBC编程接口中Statement 有两个方法特别值得注意:通过使用addBatch( ...
-
JDBC MySQL 多表关联查询查询
public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...
-
JDBC增加删除修改
一.配置程序--让我们程序能找到数据库的驱动jar包 1.把.jar文件复制到项目中去,整合的时候方便. 2.在eclipse项目右击"构建路径"--"配置构建路径&qu ...
-
JDBC简介
jdbc连接数据库的四个对象 DriverManager 驱动类 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 ...
-
JDBC Tutorials: Commit or Rollback transaction in finally block
http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...
-
FineReport如何用JDBC连接阿里云ADS数据库
在使用FineReport连接阿里云的ADS(AnalyticDB)数据库,很多时候在测试连接时就失败了.此时,该如何连接ADS数据库呢? 我们只需要手动将连接ads数据库需要使用到的jar放置到%F ...
-
JDBC基础
今天看了看JDBC(Java DataBase Connectivity)总结一下 关于JDBC 加载JDBC驱动 建立数据库连接 创建一个Statement或者PreparedStatement 获 ...
随机推荐
-
循序渐进Python3(十)-- 1 -- pymysql
使用pymsql 模块操作数据库 #!/usr/bin/env python , ),()]), user='root', passwd='123456', db='test')# 创建游标curso ...
-
Oauth笔记
上周的工作有安全验证这一块,但不懂,只知道有几个关键字Oauth.secret-key .token.签名等.今天就查下资料做笔记. Oauth是什么 不依靠用户账号和密码就能获得访问资源权限 本质: ...
-
Hadoop HDFS文件常用操作及注意事项
Hadoop HDFS文件常用操作及注意事项 1.Copy a file from the local file system to HDFS The srcFile variable needs t ...
-
Android Studio IDE 所遇问题汇总
[窗体视图无法显示] 在/res/values/styles.xml文件中,修改一下内容 <!-- Base application theme. --><style nam ...
-
Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作
目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...
-
蜗牛慢慢爬 LeetCode 11. Container With Most Water [Difficulty: Medium]
题目 Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai ...
-
设置python的默认编码方式为utf-8
在python的Lib\site-packages文件夹下新建一个sitecustomize.py,然后通过sys.getdefaultencoding()获取当前的默认编码 内容为:
-
[android] 通过比对进行容器联动
当中间容器变化之后,标题栏也要跟着变化 设计个比对依据: 抽象类BaseView中定义抽象方法,每个继承的View都必须实现,为自己的界面定义一个唯一的int常量,作为比对依据 降低容器之间的耦合度: ...
-
第3项:用私有构造器或者枚举类型强化Singleton属性
Singleton指仅仅被实例化一次的类 [Gamma95].Singleton通常代表无状态的对象,例如函数(第24项)或者本质上唯一的系统组件.使类称为Singleton会使它的客户端测试变得 ...
-
MVC3使用Area解耦项目
源代码 1.增加AreasChildRegistration类,类继承PortableAreaRegistration 2.增加引用MvcContrib 3.主项目中Area文件夹下增加Web.con ...