使⽤SpringJDBC连接数据库(以SQLServer为例)
⼀、配置Spring JDBC
1.导⼊相关jar包
(略)
2.配置⽂件l
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/schema/beans
/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.JdbcTemplate">
<!-- 默认必须使⽤数据源注⼊值 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置id为userDAO的Bena -->
<bean id="userDAO" class="ller.UserDAOImpl">
<!-- 将jdbcTemplate实例注⼊到userDAO的实例中来 -->
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>
定义JdbcTemplate时,需要将dataSource注⼊到JdbcTemplate中,对于其他需要使⽤JdbcTemplate的Bean,也需要将JdbcTemplate注⼊到该Bean中(通常注⼊到数据访问层Dao类中,在Dao中进⾏与数据库相关的操作,如上⽅配置中的userDAO Bean)。
3.操作⽰例
⽤户(⽼师)类:
package ller;
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 ller;
import java.util.List;
import org.BeanPropertyRowMapper;
import org.JdbcTemplate;
import org.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[] { UserName(), Password() };
// 执⾏添加操作,返回的是受影响的记录条数
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[] { UserName(), Password(), Id() };
// 执⾏修改操作,返回的是受影响的记录条数
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集合类型的结果java的jdbc连接数据库
return this.jdbcTemplate.query(sql, rowMapper);
}
}
测试类:
这⾥通过JUnit测试。
package st;
import java.util.List;
import org.junit.Test;
import t.ApplicationContext;
import t.support.ClassPathXmlApplicationContext;
import org.JdbcTemplate;
import ller.UserDAOImpl;
import ller.User;
public class TestJdbcTemplate {
public static void main(String[] args) {
/
/初始化Spring容器,加载l⽂件
ApplicationContext ctx= new ClassPathXmlApplicationContext("l");
//通过容器获取JdbcTemplate的实例
JdbcTemplate jdbcTemplate=(JdbcTemplate) Bean("jdbcTemplate");
//定义SQL语句
String sql="create table user(id int primary key auto_increment, userName varchar(20),password varchar(32))";
//使⽤execute()⽅法执⾏SQL语句创建⼀个user⽤户表
System.out.println("⽤户表user创建成功!");
}
@Test
public void addUserTest() {
//初始化Spring容器,加载l⽂件
ApplicationContext ctx= new ClassPathXmlApplicationContext("l");
//通过容器获取UserDAOImpl的实例
UserDAOImpl UserDAOImpl=(UserDAOImpl) Bean("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容器,加载l⽂件
ApplicationContext ctx= new ClassPathXmlApplicationContext("l");
//通过容器获取UserDAOImpl的实例
UserDAOImpl UserDAOImpl=(UserDAOImpl) Bean("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容器,加载l⽂件
ApplicationContext ctx= new ClassPathXmlApplicationContext("l");
//通过容器获取UserDAOImpl的实例
UserDAOImpl UserDAOImpl=(UserDAOImpl) Bean("UserDAOImpl");
//执⾏deleteUser⽅法,并获取返回结果
int result=UserDAOImpl.deleteUser(1);
if (result>0) {
System.out.println("成功删除了 "+result+" 条记录!");
}else {
System.out.println("删除操作执⾏失败!");
}
}
@Test
public void findUserByIdTest() {
//初始化Spring容器,加载l⽂件
ApplicationContext ctx= new ClassPathXmlApplicationContext("l");
//通过容器获取UserDAOImpl的实例
UserDAOImpl UserDAOImpl=(UserDAOImpl) Bean("UserDAOImpl");
//执⾏findUserById⽅法,获取User对象
User user=UserDAOImpl.findUserById(1);
System.out.println(user);
}
@Test
public void findAllUserTest() {
//初始化Spring容器,加载l⽂件
ApplicationContext ctx= new ClassPathXmlApplicationContext("l");
//通过容器获取UserDAOImpl的实例
UserDAOImpl UserDAOImpl=(UserDAOImpl) Bean("UserDAOImpl");
/
/执⾏findAllUser⽅法,获取User对象的集合
List<User> users=UserDAOImpl.findAllUser();
//循环输出集合中的对象
for (User user : users) {
System.out.println(user);
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论