spring07 JDBC
1.创建对应的数据库

2.在MyEclipse中创建项目 引入需要的jar包

3.创建数据访问层
public interface StudentDao {
//新增学生
int addStudent(Student student);
//删除学生
int delStudent(Student student);
//修改学生
int updateStudent(Student student);
//查询所有
List<Student> findStudents();
//查询所有的学生姓名
List<String> findNames();
}
StudentDao
public class StudentDaoImpl extends JdbcDaoSupport implements StudentDao {
@Override//新增
public int addStudent(Student student) {
String sql="insert into student(age,name) values(?,?)";
return getJdbcTemplate().update(sql,student.getAge(),student.getName());
}
@Override//删除
public int delStudent(Student student) {
String sql="delete from student where id=?";
return getJdbcTemplate().update(sql,student.getId());
}
@Override//修改
public int updateStudent(Student student) {
String sql="update student set age=?,name=? where id=?";
return getJdbcTemplate().update(sql,student.getAge(),student.getName(),student.getId());
}
//查询所有的学生信息
@Override
public List<Student> findStudents() {
String sql="select * from student";
//需要配置 行 映射器 因为 表中有3列 spring期望值是一列
return getJdbcTemplate().query(sql, new StudentRowMapper());
}
//查询所有的姓名
@Override
public List<String> findNames() {
String sql="select name from student";
return getJdbcTemplate().queryForList(sql, String.class);
}
}
StudentDaoImpl
public class StudentRowMapper implements RowMapper<Student> { //行映射器
//这里的ResultSet指的是单行数据 并不是 所有行的结果集
@Override
public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
Student student=new Student();
student.setId(rs.getInt("id"));
student.setAge(rs.getInt("age"));
student.setName(rs.getString("name"));
return student;
}
}
StudentRowMapper
4.创建业务逻辑层
public interface StudentService {
//新增学生
void addStudent(Student student);
//删除学生
void delStudent(Student student);
//修改学生
void updateStudent(Student student);
//查询所有
List<Student> findStudents();
//查询所有的学生姓名
List<String> findNames();
}
StudentService
public class StudentServiceImpl implements StudentService {
private StudentDao dao;
// 新增
@Override
public void addStudent(Student student) {
int num = dao.addStudent(student);
if (num > 0) {
System.out.println("新增成功");
} else {
System.out.println("新增失败");
}
}
@Override
// 删除
public void delStudent(Student student) {
int num = dao.delStudent(student);
if (num > 0) {
System.out.println("删除成功");
} else {
System.out.println("删除失败");
}
}
@Override
// 修改
public void updateStudent(Student student) {
int num = dao.updateStudent(student);
if (num > 0) {
System.out.println("修改成功");
} else {
System.out.println("修改失败");
}
}
@Override
// 查询所有的学生信息
public List<Student> findStudents() {
return dao.findStudents();
}
@Override
// 查询所有的学生姓名
public List<String> findNames() {
return dao.findNames();
}
public StudentDao getDao() {
return dao;
}
//DI 依赖注入
public void setDao(StudentDao dao) {
this.dao = dao;
}
}
StudentServiceImpl
5.书写配置文件
<?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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 配置数据源 01.spring的默认数据源 -->
<!-- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property
name="url" value="jdbc:mysql:///news"/> <property name="username" value="wym"/>
<property name="password" value="wym"/> </bean> --> <!-- 配置数据源 02.dbcp数据源 -->
<!-- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property
name="url" value="jdbc:mysql:///news"/> <property name="username" value="wym"/>
<property name="password" value="wym"/> </bean> --> <!-- 配置数据源 03.c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driverClass}" />
<property name="jdbcUrl" value="${jdbcUrl}" />
<property name="user" value="${user}" />
<property name="password" value="${password}" />
</bean> <!-- 01. 使用配置文件 加载 数据库需要的4要素 经常使用 -->
<context:property-placeholder location="classpath:jdbc.properties" /> <!-- 02.使用配置文件 加载 数据库需要的4要素 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"></property> </bean> --> <!-- 配置模板 -->
<bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean> <!--配置dao -->
<bean id="dao" class="cn.bdqn.dao.impl.StudentDaoImpl">
<property name="jdbcTemplate" ref="template"></property>
</bean> <!-- 配置service -->
<bean id="service" class="cn.bdqn.service.impl.StudentServiceImpl">
<property name="dao" ref="dao"></property>
</bean> </beans>
applicationContext.xml
jdbc.properties文件

6.书写测试类
public class StudentTest {
@Test
// 新增
public void addTest() {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
StudentService service = (StudentService) context.getBean("service");
service.addStudent(new Student(5655, "小白5"));
}
@Test
// 删除
public void delTest() {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
StudentService service = (StudentService) context.getBean("service");
Student student = new Student();
student.setId(2);
service.delStudent(student);
}
@Test
// 修改
public void updateTest() {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
StudentService service = (StudentService) context.getBean("service");
Student student = new Student();
student.setId(1);
student.setName("xiao");
student.setAge(1000);
service.updateStudent(student);
}
@Test
// 查询学生姓名
public void findNames() {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
StudentService service = (StudentService) context.getBean("service");
List<String> names = service.findNames();
for (String string : names) {
System.out.println(string);
}
}
@Test
// 查询学生
public void findStudents() {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
StudentService service = (StudentService) context.getBean("service");
List<Student> list = service.findStudents();
for (Student student : list) {
System.out.println(student);
}
}
}
测试代码
spring07 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 获 ...
随机推荐
- C# 判断字符串是否可以转化为数字
C# 判断字符串是否可以转化为数字 /// <SUMMARY> /// 判断字符串是否可以转化为数字 /// </SUMMARY> /// <PARAM name=&qu ...
- 使用mysql作为hive的元数据库
1.hive下载安装 2.下载mysql安装 3.以root用户进入mysql命令行:mysql -uroot -p(提示输入密码) 4.创建hive的元数据库:create databa ...
- 144 Binary Tree Preorder Traversal(二叉树先序遍历Medium)
题目意思:二叉树先序遍历,结果存在vector<int>中 解题思路:1.递归(题目中说用递归做没什么意义,我也就贴贴代码吧) 2.迭代 迭代实现: class Solution { pu ...
- cf C. Counting Kangaroos is Fun
http://codeforces.com/contest/373/problem/C 贪心,先排序,然后从n/2位置倒着找每一个可不可以放到别的袋鼠内. #include <cstdio> ...
- Android调用Asp.net Web Service示例
WebService代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...
- android 程序中res/values-v14/styles.xml报错的解决办法
从旧的ADT迁移的新的ADT时, android 程序中res/values-v14/styles.xml报错: error: Error retrieving parent for item: No ...
- 【HDOJ】3285 Convex Hull of Lattice Points
凸包模板题目. /* 3285 */ #include <iostream> #include <cstdio> #include <cstring> #inclu ...
- -_-#【Angular】定义服务
AngularJS学习笔记 <!DOCTYPE html> <html ng-app="Demo"> <head> <meta chars ...
- 【转】linux 原子整数操作详解
原文网址:http://blog.csdn.net/hunanchenxingyu/article/details/8994379 printk(“%d\n”,atomic_read(&v)) ...
- 使用 Make 命令构建网站
网站开发正变得越来越专业,涉及到各种各样的工具和流程,迫切需要构建自动化. 所谓”构建自动化”,就是指使用构建工具,自动实现”从源码到网页”的开发流程.这有利于提高开发效率.改善代码质量. 本文介绍如 ...