一、导入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模板的更多相关文章

  1. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. 开涛spring3(7.2) - 对JDBC的支持 之 7.2 JDBC模板类

    7.2  JDBC模板类 7.2.1  概述 Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,所以其他模板类都是基于它封装完成的,JDB ...

  3. spring框架总结(04)----介绍的是Spring中的JDBC模板

    1.1  Jdbc模板概述 它是spring框架中提供的一个对象,是对原始Jdbc API对象的简单封装.spring框架为我们提供了很多的操作模板类,入下图所示: 我们今天的主角在spring-jd ...

  4. Spring中的JDBC模板类入门

    1.Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2.提供了JDBC模板,Spring框架提供的 *JdbcTemplate类 3.Spring框架可以整合Hib ...

  5. Spring的jdbc模板3:完成CURD操作

    测试类代码如下 package zcc.spring_jdbc.demo2; import java.sql.ResultSet; import java.sql.SQLException; impo ...

  6. Spring的jdbc模板2:使用开源的连接池

    上篇简要介绍了如何在spring中配置默认的连接池和jdbc模板,这篇来介绍开源的连接池配置与属性引入 C3P0连接池配置: 引入jar包 配置c3p0连接池 <?xml version=&qu ...

  7. Spring的jdbc模板1

    Spring是EE开发的一站式框架,有EE开发的每一层解决方案.Spring对持久层也提供了解决方案:ORM模块和jdbc模块,ORM模块在整合其他框架的时候使用 Spring提供了很多的模板用于简化 ...

  8. java框架之Spring(3)-JDBC模板使用&事务管理

    下面内容使用到的 jar 包下载 JDBC模板使用 入门 1.导包,如要导入 Spring 的基本开发包.数据库驱动包.Spring 提供的 JDBC 模板包,如下: 2.测试: @Test publ ...

  9. Java学习笔记43(Spring的jdbc模板)

    在之前的学习中,我们执行sql语句,需要频繁的开流,关流比较麻烦,为了更加的简化代码,我们使用Spring 的jdbc模板jdbcTemplate来简化我们的代码量:需要导入的包有: 我们在之前的dr ...

随机推荐

  1. pyftpdlib 搭建FTP服务器

    学会socket之后,就可以使用应用层的协议了,比如FTP,HTTP等,不过一般这些应用层都会有现成的模块,学不学socket都无所谓,这是python的方便之处.这里搭建FTP服务器使用的就是pyf ...

  2. Unix/Linux命令:SED

    在Unix/Linux系统中,sed命令采用逐行处理的方式对文件进行查找.删除.替换.添加.插入等操作. 语法:sed [OPTION]... {script-only-if-no-other-scr ...

  3. Hystrix-命令名称、分组以及线程池划分

    命令名称: 1.1 以继承的方式实现Hystrix命令使用类名作为默认的命令名称,我们也可以在构造函数中通过Setter静态类来设置 1.2 为了保存每个命令分配的Setter分配,你也可以像这样缓存 ...

  4. centos如何安装python库?

    通过yum install安装,先解决yum不能安装python库的问题 yum install -y  epel-release  #先安装epel源,参考http://sharadchhetri. ...

  5. javaweb后台转码

    为什么需要转码? 客户端向服务器发送请求的四种情况:1.URL方式直接访问;2.页面链接(属于get请求);3.表单get提交;4.表单post提交 1.url(url和页面链接):各大浏览器.各个操 ...

  6. 一个滑动选中RecyclerView中Item的布局SlidingCheckLayout,手指滑过Item时多项选中。

    SlidingCheckLayout是一个滑动选中RecyclerView中Item的布局,手指滑过Item时多项选中. 作者:竹尘居士 github:https://github.com/homgw ...

  7. 豹哥嵌入式讲堂:ARM知识概要杂辑(4)- Cortex-M处理器性能指标

    1.处理器的性能指标 用于评价CPU的性能指标非常多,不同的性能侧重点下的测试标准可能得出的指标值不同,下面介绍嵌入式行业广泛使用的两个经典的测试标准. 1.1 Dhrystone标准 Dhrysto ...

  8. Linux命令:useradd

    Linux下:useradd 等价于 adduser     Aix下:useradd 来自为知笔记(Wiz)

  9. Jetson TX2安装固态硬盘(原创)

    SSD on Jetson TX2 注意事项:在断电情况下,将固态硬盘的接线与Jetson TX2进行连接 步骤: 一.jetson tx2开机,打开搜索栏中的Disks 二.Disks显示画面 三. ...

  10. Macaca拓展自己控件的方法

    https://github.com/macacajs/wd.py/blob/3bc4334bcb68733cb230b59d6164110053fd1c16/tests/macaca/test_ut ...