Spring_Spring与DAO_Spring的Jdbc模板

时间:2023-09-01 22:20:45
Spring_Spring与DAO_Spring的Jdbc模板

一、导入Jar包

Spring_Spring与DAO_Spring的Jdbc模板

二、定义实体类与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

Spring_Spring与DAO_Spring的Jdbc模板

三、定义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