Spring_Spring与DAO_Spring的Jdbc模板
一、导入Jar包

二、定义实体类与DB表
public class Student {
private Integer id;
private String name;
private int age;
public Student() {
super();
}
public Student( String name, int age) {
super();
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer 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;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
Student

三、定义Service
import java.util.List; import com.jmu.beans.Student;
//service业务
public interface IStudentService {
void addStudent(Student student);
void removeById(int id);
void modifyStudent(Student student); List<String> findAllStudentsNames();
String findStudentNameById(int id); List<Student> findAllStudents();
Student findStudentById(int id);
}
IStudentService
import java.util.List; import com.jmu.beans.Student;
import com.jmu.dao.IStudentDao; public class StudentServiceImpl implements IStudentService {
private IStudentDao dao; public void setDao(IStudentDao dao) {
this.dao = dao;
} @Override
public void addStudent(Student student) {
// TODO Auto-generated method stub
dao.insertStudent(student); } @Override
public void removeById(int id) {
// TODO Auto-generated method stub
dao.deleteById(id);
} @Override
public void modifyStudent(Student student) {
// TODO Auto-generated method stub
dao.updateStudent(student);
} @Override
public List<String> findAllStudentsNames() {
// TODO Auto-generated method stub
return dao.selectAllStudentsNames();
} @Override
public String findStudentNameById(int id) {
// TODO Auto-generated method stub
return dao.selectStudentNameById(id);
} @Override
public List<Student> findAllStudents() {
// TODO Auto-generated method stub
return dao.selectAllStudents();
} @Override
public Student findStudentById(int id) {
// TODO Auto-generated method stub
return dao.selectStudentById(id);
} }
StudentServiceImpl
四、定义Dao
import java.util.List; import com.jmu.beans.Student; //Dao增删改查
public interface IStudentDao {
void insertStudent(Student student);
void deleteById(int id);
void updateStudent(Student student); List<String> selectAllStudentsNames();
String selectStudentNameById(int id); List<Student> selectAllStudents();
Student selectStudentById(int id);
}
IStudentDao
import java.util.List;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import com.jmu.beans.Student;
public class StudentDaoImpl extends JdbcDaoSupport implements IStudentDao {
@Override
public void insertStudent(Student student) {
// TODO Auto-generated method stub
String sql="insert into student(name,age) value(?,?)";
this.getJdbcTemplate().update(sql, student.getName(),student.getAge());
}
@Override
public void deleteById(int id) {
// TODO Auto-generated method stub
String sql="delete from student where id=?";
this.getJdbcTemplate().update(sql, id);
}
@Override
public void updateStudent(Student student) {
// TODO Auto-generated method stub
String sql="update student set name=?,age=? where id=?";
this.getJdbcTemplate().update(sql, student.getName(),student.getAge(),student.getId());
}
@Override
public List<String> selectAllStudentsNames() {
// TODO Auto-generated method stub
String sql="select name from student";
return this.getJdbcTemplate().queryForList(sql, String.class);
}
@Override
public String selectStudentNameById(int id) {
// TODO Auto-generated method stub
String sql="select name from student where id=?";
return this.getJdbcTemplate().queryForObject(sql, String.class,id);
}
@Override
public List<Student> selectAllStudents() {
// TODO Auto-generated method stub
String sql="select id,name,age from student";
return this.getJdbcTemplate().query(sql, new StudentRowMapper());
}
@Override
public Student selectStudentById(int id) {
// TODO Auto-generated method stub
String sql="select id,name,age from student where id=?";
return this.getJdbcTemplate().queryForObject(sql, new StudentRowMapper(),id);
}
}
StudentDaoImpl
import java.sql.ResultSet;
import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; import com.jmu.beans.Student; public class StudentRowMapper implements RowMapper<Student> { //rs:当查询出总的结果集后,框架会自动遍历这个结果集,每一次遍历的一行数据,都会被存放到这个方法的rs参数中,也就是说,这里的rs代表的是一行数据,并非所有查询结果,换个角度,只要能执行这个方法,就说明这里的rs不会是空的
@Override
public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
// TODO Auto-generated method stub、
Student student=new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
return student;
} }
StudentRowMapper
五、相应的注册
<?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"
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"> <!--注册数据源:Spring内置连接池 -->
<!-- <bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property
name="url" value="jdbc:mysql://127.0.0.1:3306/test1"/> <property name="username"
value="root"/> <property name="password" value="123456"/> </bean> --> <!--注册数据源:DBCP -->
<!-- <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property
name="url" value="jdbc:mysql://127.0.0.1:3306/test1"/> <property name="username"
value="root"/> <property name="password" value="123456"/> </bean> -->
<!--注册数据源:C3P0 -->
<!-- <bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl"
value="jdbc:mysql://127.0.0.1:3306/test1"/> <property name="user" value="root"/>
<property name="password" value="123456"/> </bean> -->
<!--注册数据源:C3P0 -->
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
</bean> <!-- 注册属性文件:方式一 -->
<!-- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"></property> </bean> -->
<context:property-placeholder location="classpath:jdbc.properties" /> <!--注册JdbcTemplate(模板) -->
<!-- <bean id="myJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="myDataSource" /> </bean>
注册Dao
<bean id="studentDao" class="com.jmu.dao.StudentDaoImpl">
<property name="jdbcTemplate" ref="myJdbcTemplate" />
</bean> -->
<!--注册Dao -->
<bean id="studentDao" class="com.jmu.dao.StudentDaoImpl">
<property name="dataSource" ref="myDataSource" /> </bean> <!-- 注册Service -->
<bean id="studentService" class="com.jmu.service.StudentServiceImpl">
<property name="dao" ref="studentDao" />
</bean>
</beans>
applicationContext
六、从属性文件读取DB四要素
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test1
jdbc.user=root
jdbc.password=123456
jdbc.properties
七、定义测试类
import java.util.List; import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.jmu.beans.Student;
import com.jmu.service.IStudentService; public class MyTest { private IStudentService service; @Before
public void before() {
//创建容器对象
String resource = "applicationContext.xml";
ApplicationContext ac=new ClassPathXmlApplicationContext(resource);
service = (IStudentService) ac.getBean("studentService");
} @Test
public void test01() {
Student student=new Student("张三", 23);
service.addStudent(student);
} @Test
public void test02() {
service.removeById(2);
} @Test
public void test03() {
Student student=new Student("王意义", 23);
student.setId(3);
service.modifyStudent(student);
}
@Test
public void test04() {
List<String> names = service.findAllStudentsNames();
System.out.println(names);
}
@Test
public void test05() {
String names = service.findStudentNameById(3);
System.out.println(names);
} @Test
public void test06() {
List<Student> students=service.findAllStudents();
for (Student student : students) {
System.out.println(student);
}
} @Test
public void test07() {
Student student=service.findStudentById(3);
System.out.println(student);
} }
MyTest
Spring_Spring与DAO_Spring的Jdbc模板的更多相关文章
- [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 开涛spring3(7.2) - 对JDBC的支持 之 7.2 JDBC模板类
7.2 JDBC模板类 7.2.1 概述 Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,所以其他模板类都是基于它封装完成的,JDB ...
- spring框架总结(04)----介绍的是Spring中的JDBC模板
1.1 Jdbc模板概述 它是spring框架中提供的一个对象,是对原始Jdbc API对象的简单封装.spring框架为我们提供了很多的操作模板类,入下图所示: 我们今天的主角在spring-jd ...
- Spring中的JDBC模板类入门
1.Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2.提供了JDBC模板,Spring框架提供的 *JdbcTemplate类 3.Spring框架可以整合Hib ...
- Spring的jdbc模板3:完成CURD操作
测试类代码如下 package zcc.spring_jdbc.demo2; import java.sql.ResultSet; import java.sql.SQLException; impo ...
- Spring的jdbc模板2:使用开源的连接池
上篇简要介绍了如何在spring中配置默认的连接池和jdbc模板,这篇来介绍开源的连接池配置与属性引入 C3P0连接池配置: 引入jar包 配置c3p0连接池 <?xml version=&qu ...
- Spring的jdbc模板1
Spring是EE开发的一站式框架,有EE开发的每一层解决方案.Spring对持久层也提供了解决方案:ORM模块和jdbc模块,ORM模块在整合其他框架的时候使用 Spring提供了很多的模板用于简化 ...
- java框架之Spring(3)-JDBC模板使用&事务管理
下面内容使用到的 jar 包下载 JDBC模板使用 入门 1.导包,如要导入 Spring 的基本开发包.数据库驱动包.Spring 提供的 JDBC 模板包,如下: 2.测试: @Test publ ...
- Java学习笔记43(Spring的jdbc模板)
在之前的学习中,我们执行sql语句,需要频繁的开流,关流比较麻烦,为了更加的简化代码,我们使用Spring 的jdbc模板jdbcTemplate来简化我们的代码量:需要导入的包有: 我们在之前的dr ...
随机推荐
- Java中泛型数组创建总结
在java中,可以声明一个泛型数组,不能通过直接通过T[] tarr=new T[10]的方式来创建数组,最简单的方式便是通过Array.newInstance(Classtype,int size) ...
- Android一个包含表格的图标库
之前有写过一个图表lib,但是开发的速度,大多很难跟上产品需求变化的脚步,所以修改了下原先的图表库,支持图表下面能整合table显示对应的类目,用曲线替换了折线,支持多曲线的显示,增加了显示的动画,, ...
- ceph rbd 封装api
1.安装python,uwsgi,nginx环境 pip安装省略 yumgroupinstall"Developmenttools" yuminstallzlib-develbzi ...
- mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理
转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有 ...
- Oracle Sqlload 导入数据
sqlload导入数据具有快,简单,无需校验等方便,多说无益 1 首先,oracle数据库要有这么个表,用来接收数据.我这里这个uuid是序列生成的,当然也可以sqlload导入时候分配uuid -- ...
- 查阅API文档
Java的API文档:就一句话:应用程序接口 •API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口. •Java语言提供了 ...
- WMS—启动过程
基于Android 6.0源码, 分析WMS的启动过程. 一. 概述 Surface:代表画布 WMS: 添加window的过程主要功能是添加Surface,管理所有的Surface布局,以及Z轴排序 ...
- 准备:新V8即将到来,Node.js的性能正在改变
V8的Turbofan的性能特点将如何对我们优化的方式产生影响 审阅:来自V8团队的Franziska Hinkelmann和Benedikt Meurer. **更新:Node.js 8.3.0已经 ...
- Asp.net mvc 中View 的呈现(二)
[toc] 上一节介绍了 Asp.net mvc 中除 ViewResult 外的所有的 ActionResult,这一节介绍 ViewResult. ViewResultBase ViewResul ...
- JFinal源码 分析之 Core包分析
ActionHandler.java 这个类继承了上面 说的Handler类,首先我们 上 几个属性 ,下面几个 属性我们 需要 关心哪些东西 呢?首先 是ActionMapping和RenderMa ...