spring jdbcTemplate测试

 1、DAO interface
package test.dao;

import java.util.List;

import test.model.Book;

public interface BookDAO {
void create(Book book);
List<Book> queryByAuthor( String author);
}

2、DAO Impl

package test.dao.impl;

import java.sql. ResultSet;
import java.sql. SQLException;
import java.util.List;

import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

import test.dao.BookDAO;
import test.model.Book;

public class BookDAOImpl extends JdbcDaoSupport implements BookDAO {

class BookRowMapper implements RowMapper {

public Object mapRow( ResultSet rs, int rowNum) throws SQLException {
Book book = new Book();
book.setId(rs.getLong( "id" ));
book.setName(rs.getString(
"name" ));
book.setAuthor(rs.getString(
"author" ));
return book;
}

}

public void create(Book book) {
getJdbcTemplate().update(
"insert into book(id,name,author)values(book_seq.nextval,?,?)" ,
new Object[] { book.getName(), book.getAuthor() });
}

public List<Book> queryByAuthor(String author) {
return getJdbcTemplate().query(
"select * from book where author=?" , new Object[]{author}, new BookRowMapper());
}


}
3、spring context
<?xml version=
"1.0" encoding= "UTF-8" ?>
<!DOCTYPE beans PUBLIC
"-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>

    <!--========WebDb DataSource========================================================================-->
<!-- -->
<bean id=
"webdbDataSource"
          class=
"org.apache.commons.dbcp.BasicDataSource"
          destroy-method=
"close" >
        <property name=
"driverClassName" value= "oracle.jdbc.driver.OracleDriver" />
        <property name=
"url" value= "jdbc:oracle:thin:@localhost:1521:lunzi" />
        <property name=
"username" value= "webnews" />
        <property name=
"password" value= "123456" />
    </bean>
    
<bean id=
"jdbcTemplate" class= "org.springframework.jdbc.core.JdbcTemplate" >
<property name=
"dataSource" ref= "webdbDataSource" />
</bean>

<bean id=
"bookDao" class= "test.dao.impl.BookDAOImpl" >
<property name=
"dataSource" ref= "webdbDataSource" />
</bean>

</beans>
4、测试类
package test.dao.test;

import java.util.List;

import test.dao.BookDAO;
import test.model.Book;

public class BookDAOTest extends BaseDaoTestCase {
public BookDAO bookDao;

public void setBookDao(BookDAO bookDao){
this.bookDao = bookDao;
}

/*public void testCreateBook(){
Book book = new Book();
book.setAuthor("lunzi2");
book.setName("cow2");
this.bookDao.create(book);
}*/


public void testQueryByAuthor(){
List<Book> list = this.bookDao.queryByAuthor(
"lunzi2" );

for(Book book:list){
System.out.println(book.getName());
}
super.assertNotNull(list);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答你的问题。以下是使用SpringJdbcTemplate连接数据库实现学生管理系统增删改查并在Controller层输入用户名与密码进行效验的示例代码: 首先,我们需要在pom.xml文件中添加相关的依赖: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.9</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> ``` 然后,创建一个包含以下字段的学生表: ```sql CREATE TABLE students ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT NOT NULL, gender VARCHAR(10) NOT NULL, department VARCHAR(50) NOT NULL ); ``` 接下来,创建一个Student类来表示学生实体: ```java public class Student { private int id; private String name; private int age; private String gender; private String department; // 省略getter和setter方法 } ``` 然后,创建一个StudentDao类来处理学生数据的增删改查操作: ```java @Repository public class StudentDao { @Autowired private JdbcTemplate jdbcTemplate; public List<Student> getAllStudents() { String sql = "SELECT * FROM students"; return jdbcTemplate.query(sql, (resultSet, i) -> { Student student = new Student(); student.setId(resultSet.getInt("id")); student.setName(resultSet.getString("name")); student.setAge(resultSet.getInt("age")); student.setGender(resultSet.getString("gender")); student.setDepartment(resultSet.getString("department")); return student; }); } public Student getStudentById(int id) { String sql = "SELECT * FROM students WHERE id = ?"; return jdbcTemplate.queryForObject(sql, new Object[]{id}, (resultSet, i) -> { Student student = new Student(); student.setId(resultSet.getInt("id")); student.setName(resultSet.getString("name")); student.setAge(resultSet.getInt("age")); student.setGender(resultSet.getString("gender")); student.setDepartment(resultSet.getString("department")); return student; }); } public void addStudent(Student student) { String sql = "INSERT INTO students (name, age, gender, department) VALUES (?, ?, ?, ?)"; jdbcTemplate.update(sql, student.getName(), student.getAge(), student.getGender(), student.getDepartment()); } public void updateStudent(Student student) { String sql = "UPDATE students SET name = ?, age = ?, gender = ?, department = ? WHERE id = ?"; jdbcTemplate.update(sql, student.getName(), student.getAge(), student.getGender(), student.getDepartment(), student.getId()); } public void deleteStudent(int id) { String sql = "DELETE FROM students WHERE id = ?"; jdbcTemplate.update(sql, id); } } ``` 最后,我们可以在Controller层进行用户名与密码的效验,并调用StudentDao类中的方法来进行学生数据的增删改查操作: ```java @Controller public class StudentController { @Autowired private StudentDao studentDao; @RequestMapping(value = "/login", method = RequestMethod.POST) public String login(@RequestParam String username, @RequestParam String password) { // 根据用户名和密码进行效验,这里省略具体实现 return "redirect:/students"; } @RequestMapping("/students") public String getAllStudents(Model model) { List<Student> students = studentDao.getAllStudents(); model.addAttribute("students", students); return "students"; } @RequestMapping("/students/{id}") public String getStudentById(@PathVariable int id, Model model) { Student student = studentDao.getStudentById(id); model.addAttribute("student", student); return "student"; } @RequestMapping(value = "/students/add", method = RequestMethod.POST) public String addStudent(@ModelAttribute Student student) { studentDao.addStudent(student); return "redirect:/students"; } @RequestMapping(value = "/students/update", method = RequestMethod.POST) public String updateStudent(@ModelAttribute Student student) { studentDao.updateStudent(student); return "redirect:/students"; } @RequestMapping("/students/delete/{id}") public String deleteStudent(@PathVariable int id) { studentDao.deleteStudent(id); return "redirect:/students"; } } ``` 最后,我们可以通过JUnit测试来验证上述代码的正确性: ```java @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:applicationContext.xml"}) public class StudentDaoTest { @Autowired private StudentDao studentDao; @Test public void testGetAllStudents() { List<Student> students = studentDao.getAllStudents(); assertNotNull(students); assertEquals(3, students.size()); } @Test public void testGetStudentById() { Student student = studentDao.getStudentById(1); assertNotNull(student); assertEquals("张三", student.getName()); } @Test public void testAddStudent() { Student student = new Student(); student.setName("李四"); student.setAge(20); student.setGender("男"); student.setDepartment("计算机科学"); studentDao.addStudent(student); List<Student> students = studentDao.getAllStudents(); assertNotNull(students); assertEquals(4, students.size()); } @Test public void testUpdateStudent() { Student student = new Student(); student.setId(1); student.setName("张三三"); student.setAge(21); student.setGender("女"); student.setDepartment("软件工程"); studentDao.updateStudent(student); Student updatedStudent = studentDao.getStudentById(1); assertNotNull(updatedStudent); assertEquals("张三三", updatedStudent.getName()); assertEquals(21, updatedStudent.getAge()); assertEquals("女", updatedStudent.getGender()); assertEquals("软件工程", updatedStudent.getDepartment()); } @Test public void testDeleteStudent() { studentDao.deleteStudent(1); List<Student> students = studentDao.getAllStudents(); assertNotNull(students); assertEquals(2, students.size()); } } ``` 以上就是使用SpringJdbcTemplate连接数据库实现学生管理系统增删改查并在Controller层输入用户名与密码进行效验的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值