使用Spring JDBC连接数据库(以SQL Server为例)
一、配置Spring JDBC
1.导入相关jar包
(略)
2.配置文件applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<!-- 驱动类名 -->
<property name="url" value="jdbc:sqlserver://127.0.0.1:1433;databaseName=news" />
<!-- url访问地址 -->
<property name="username" value="sa" /><!-- 链接数据库的用户名 -->
<property name="password" value="12345yehuan" /><!-- 链接数据库的密码 -->
</bean>
<!-- 配置Jdbc模板 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 默认必须使用数据源注入值 -->
<property name="dataSource" ref="dataSource"></property>
</bean> <!-- 配置id为userDAO的Bena -->
<bean id="userDAO" class="com.springmvc.controller.UserDAOImpl">
<!-- 将jdbcTemplate实例注入到userDAO的实例中来 -->
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean> </beans>
定义JdbcTemplate时,需要将dataSource注入到JdbcTemplate中,对于其他需要使用JdbcTemplate的Bean,也需要将JdbcTemplate注入到该Bean中(通常注入到数据访问层Dao类中,在Dao中进行与数据库相关的操作,如上方配置中的userDAO Bean)。
3.操作示例
用户(老师)类:
package com.springmvc.controller; public class User {
private int id; //用户id
private String userName; //用户名
private String password; //用户密码
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//重写toString方法
@Override
public String toString() {
return "User对象:"+id+" --- " +userName+" -- "+password;
} }
UserDAOImpl类:
主要进行对数据库的相关操作。
package com.springmvc.controller; import java.util.List; import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; public class UserDAOImpl { // 声明JdbcTemplate属性及其setter方法
private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
} // 添加用户的实现方法
public int addUser(User user) {
String sql = "insert into teacher(userName,password) values(?,?)";
// 使用数组来存储SQL语句中的参数
Object[] object = new Object[] { user.getUserName(), user.getPassword() };
// 执行添加操作,返回的是受影响的记录条数
int result = jdbcTemplate.update(sql, object);
return result;
} // 修改用户的实现方法
public int updateUser(User user) {
String sql = "update teacher set userName=?,password=? where id=?";
// 使用数组来存储SQL语句中的参数
Object[] params = new Object[] { user.getUserName(), user.getPassword(), user.getId() };
// 执行修改操作,返回的是受影响的记录条数
int result = jdbcTemplate.update(sql, params);
return result;
} // 删除用户的实现方法
public int deleteUser(int id) {
String sql = "delete from teacher where id=?";
// 执行删除操作,返回的是受影响的记录条数
int result = jdbcTemplate.update(sql, id);
return result;
} // 通过id查询单个用户的实现方法
public User findUserById(int id) {
// 定义单个查询的SQL语句
String sql = "select * from teacher where id=?";
// 创建一个新的BeanPropertyRowMapper对象,将结果集通过Java的反射机制映射到Java对象中
RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
// 将id绑定到SQL语句中,并通过RowMapper返回一个Object类型的对象
return this.jdbcTemplate.queryForObject(sql, rowMapper, id);
} // 查询所有用户的实现方法
public List<User> findAllUser() {
// 查询所有用户的SQL语句
String sql = "select * from teacher";
// 创建一个新的BeanPropertyRowMapper对象
RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
// 执行静态的SQL查询,并通过RowMapper返回List集合类型的结果
return this.jdbcTemplate.query(sql, rowMapper);
} }
测试类:
这里通过JUnit测试。
package com.ssm.test; import java.util.List; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate; import com.springmvc.controller.UserDAOImpl;
import com.springmvc.controller.User; public class TestJdbcTemplate {
public static void main(String[] args) {
//初始化Spring容器,加载applicationContext.xml文件
ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
//通过容器获取JdbcTemplate的实例
JdbcTemplate jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");
//定义SQL语句
String sql="create table user(id int primary key auto_increment, userName varchar(20),password varchar(32))";
//使用execute()方法执行SQL语句创建一个user用户表
jdbcTemplate.execute(sql);
System.out.println("用户表user创建成功!");
} @Test
public void addUserTest() {
//初始化Spring容器,加载applicationContext.xml文件
ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
//通过容器获取UserDAOImpl的实例
UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl");
//创建User对象,并向user中添加数据
User user=new User();
user.setUserName("yzpc");
user.setPassword("yzpc");
//执行addUser方法,并获取返回结果
int result=UserDAOImpl.addUser(user);
if (result>0) {
System.out.println("成功向数据表中插入了 "+result+" 条记录!");
}else {
System.out.println("往数据表中插入数据失败!");
}
} @Test
public void updateUserTest() {
//初始化Spring容器,加载applicationContext.xml文件
ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
//通过容器获取UserDAOImpl的实例
UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl");
//创建User对象,并向user中添加数据
User user=new User();
user.setId(1);
user.setUserName("yzpc");
user.setPassword("123456");
//执行updateUser方法,并获取返回结果
int result=UserDAOImpl.updateUser(user);
if (result>0) {
System.out.println("成功修改了 "+result+" 条记录!");
}else {
System.out.println("修改操作执行失败!");
}
} @Test
public void deleteUserTest() {
//初始化Spring容器,加载applicationContext.xml文件
ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
//通过容器获取UserDAOImpl的实例
UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl");
//执行deleteUser方法,并获取返回结果
int result=UserDAOImpl.deleteUser(1);
if (result>0) {
System.out.println("成功删除了 "+result+" 条记录!");
}else {
System.out.println("删除操作执行失败!");
}
} @Test
public void findUserByIdTest() {
//初始化Spring容器,加载applicationContext.xml文件
ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
//通过容器获取UserDAOImpl的实例
UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl");
//执行findUserById方法,获取User对象
User user=UserDAOImpl.findUserById(1);
System.out.println(user);
} @Test
public void findAllUserTest() {
//初始化Spring容器,加载applicationContext.xml文件
ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
//通过容器获取UserDAOImpl的实例
UserDAOImpl UserDAOImpl=(UserDAOImpl) ctx.getBean("UserDAOImpl");
//执行findAllUser方法,获取User对象的集合
List<User> users=UserDAOImpl.findAllUser();
//循环输出集合中的对象
for (User user : users) {
System.out.println(user);
}
} }
使用Spring JDBC连接数据库(以SQL Server为例)的更多相关文章
- 喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库
相信通过java和SQLServer开发应用的同学们都经历过如下类似的问题. 微软提供的JDBC官方驱动没有放置在Maven仓库中,这样如果你的Java应用需要访问SQL Server,你不得不下载s ...
- eclipse使用jdbc方式连接sql server 2012数据库史上最新最详细教程(2015年4月已亲测)
步骤分为3部:1.通过sql server 配置管理器配置1433端口 2.将sqljdbc41.jar类库添加到对应的工程中 3.在java程序中连接数据库 步骤1:打开sql server ...
- 在xpage上怎么用jdbc去连接sql server呀
你去http://www.openntf.org/Internal/home.nsf 下載以下對應版本最新控件 XPages Extension Library 這裏面已經包括OSGI功能 OSGI在 ...
- java jdbc dbcp连接SQL Server
使用到的jar: commons-collections-3.1.jar commons-dbcp-1.4.jar commons-pool-1.5.6.jar sqljdbc4.jar dbcp配置 ...
- (转) java 通过 jdbc 链接 ms sql server 中出现 "no suitable driver for ..."
原文连接 : http://blog.csdn.net/stewen_001/article/details/19553173/ 前面是 基本操作步骤,按照原博主的方式进行操作即可...() 这里是需 ...
- spring jdbc连接数据库
1.在applicationContext.xml中配置jdbc bean <bean id="dataSource" class="org.springframe ...
- Java安装JDBC驱动教程(SQL Server系列)
端口一般开放都没问题,默认设置就行,第一步下载JDBC,我自己在使用微软新的JDBC6.0的包的时候出错,后来就退回到JDBC4.0引用,完美使用. SQLJDBC4.0下载地址:点击下载 下载之后, ...
- jdbc——java连接sql server 过程
首先要去下一个关于sql的驱动jar包,叫做sqljdbc4.jar 然后更新项目的build path,加入这个jar包 前几步有问题的看该博客 https://blog.csdn.net/qq24 ...
- spring 、Mybatis配置sql server数据库
学习了:http://www.cnblogs.com/amwicfai/p/3181003.html beans.xml中的配置写法: <!-- 数据源 --> <bean id=& ...
随机推荐
- Django 小实例S1 简易学生选课管理系统 总目录
python Django实现的一个简易的教务选课系统. 介绍与演示的视频版本已发到我的b站: https://www.bilibili.com/video/BV1er4y1w7ty. 项目已上传到我 ...
- cmd 命令 导出导入oracle数据库 的 表
原地址:https://www.cnblogs.com/mysterious-killer/p/11671741.html (防止) 导出: 不要数据的:exp username/pwd@localh ...
- SQL Server2019数据库备份与还原脚本,数据库可批量备份
前言 最近公司服务器到期,需要进行数据迁移,而数据库属于多而繁琐,通过图形化界面一个一个备份所需时间成本很大,所以想着写一个sql脚本来执行. 开始 数据库单个备份 数据库批量备份 数据库还原 数据库 ...
- [atAGC050B]Three Coins
记$p_{i}$表示该位置是否有硬币 称使得$p_{i,i+1,i+2}$都变为1的操为对$i$的添加操作,使得$p_{i,i+1,i+2}$都变为0的操作为对$i$的删除操作 考虑一个简单的操作:若 ...
- Apache ShardingSphere 5.0.0 内核优化及升级指南
经过近两年时间的优化和打磨,Apache ShardingSphere 5.0.0 GA 版终于在本月正式发布,相比于 4.1.1 GA 版,5.0.0 GA 版在内核层面进行了大量的优化.首先,基于 ...
- HDU 6116 路径计数
HDU 6116 路径计数 普通生成函数常用于处理组合问题,指数生成函数常用于处理排列问题. 考虑 对于 $ a $ 个 $ A $ 分为很多堆,这么分的方案数是 $ C_{a-1}^{i-1} $ ...
- 【机器学*与R语言】2-懒惰学*K*邻(kNN)
目录 1.理解使用KNN进行分类 KNN特点 KNN步骤 1)计算距离 2)选择合适的K 3)数据准备 2.用KNN诊断乳腺癌 1)收集数据 2)探索和准备数据 3)训练模型 4)评估模型的性能 5) ...
- MySQL_集群
管理节点:192.168.31.66 sql节点1+data1节点:192.168.31.42 sql节点2+data2节点:192.168.31.128 llll
- rabbit mq的php使用 php-amqplib操作消息队列
rabbit mq的php使用 php-amqplib操作消息队列 有大神翻译的教程,非常清楚可以参考: https://xiaoxiami.gitbook.io/rabbitmq_into_chin ...
- react native 导航器 Navigator 简单的例子
最近学习react native 是在为全栈工程师而努力,看网上把react native说的各种好,忍不住学习了一把.总体感觉还可以,特别是可以开发android和ios这点非常厉害,刚开始入门需要 ...