Advertisement

JSQLException学生信息维护(案例09)

阅读量:

通过Spring JdbcTemplate技术,可完成对学生信息的添加、更新、删除、单条检索以及全部数据查询等操作,并支持对MySQL数据库进行相关处理。学生信息包含主键标识、姓名及年龄等基本属性。

1. 数据初始化

建立名为student的数据库

复制代码
    create database student default charset utf8 collate utf8_general_ci;
    

构建t_student数据表

复制代码
    create table t_student ( id varchar(32) not null, name varchar(255), age int );
    

对数据进行初始设置

复制代码
    insert into t_student values("1","lucy",19); insert into t_student values("2","lili",20);
    

2. 创建项目

建立一个Java开发项目,该项目的命名应为spring-jdbc。

3. 导入Spring相关jar包

在spring-jdbc项目中,需建立一个名为lib的文件夹,并将所需的Jar包导入至该目录:

基础组件包

spring-core-5.3.25.jar、

spring-beans-5.3.25.jar、

spring-context-5.3.25.jar、

spring-expression-5.3.25.jar

面向切面编程相关包

spring-aop-5.3.25.jar

数据库操作相关包

spring-jdbc-5.3.25.jar、

spring-tx-5.3.25.jar、

mysql-connector-java-8.0.27.jar、

druid-1.2.8.jar

测试工具包

junit-4.6.jar

其他依赖库

commons-logging-1.2.jar

4. 创建Spring配置文件

在src目录中生成一个名为applicationContext.xml的配置文件。

复制代码
 <?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 https://www.springframework.org/schema/context/spring-context.xsd">
    
     <!--开启注解-->
    
     <context:component-scan base-package="com.wfit"/>
    
     <!--配置数据源-->
    
     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    
     <!--mysql驱动-->
    
     <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
    
     <!--连接数据库的url-->
    
     <property name="url" value="jdbc:mysql://localhost:3306/student"/>
    
     <!--用户名-->
    
     <property name="username" value="root"/>
    
     <!--密码-->
    
     <property name="password" value="123456"/>
    
     </bean>
    
     <!--配置JdbcTemplate-->
    
     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    
     <!--注入dataSource-->
    
     <property name="dataSource" ref="dataSource"/>
    
     </bean>
    
 </beans>
    
    
    
    

5. 创建Student实体类

在src目录中建立com.wfit.entity包,并在该包目录内生成Student.java类文件。

复制代码
 public class Student {

    
     //主键id
    
     private String id;
    
     //姓名
    
     private String name;
    
     //年龄
    
     private int age;
    
  
    
     public String getId() {
    
     return id;
    
     }
    
     public void setId(String 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 +
    
             '}';
    
     }
    
 }
    
    
    
    

6. 创建StudentDao类

在src目录中建立com.wfit.dao文件夹,并在该文件夹内部生成StudentDao.java源代码文件。

复制代码
 @Repository

    
 public class StudentDao {
    
     /*
    
       注入jdbcTemplate
    
      */
    
     @Autowired
    
     private JdbcTemplate jdbcTemplate;
    
     /** * 新增
    
      * @param student
    
      */
    
     public void addStudent(Student student){
    
     String sql = "insert into t_student values(?,?,?)";
    
     Object[] args = {student.getId(), student.getName(), student.getAge()};
    
     jdbcTemplate.update(sql,args);
    
     System.out.println("新增数据成功!");
    
     }
    
     /** * 修改
    
      * @param student
    
      */
    
     public void updateStudent(Student student){
    
     String sql = "update t_student set name = ?,age = ? where id = ?";
    
     Object[] args = {student.getName(),student.getAge(),student.getId()};
    
     jdbcTemplate.update(sql,args);
    
     System.out.println("修改数据成功!");
    
     }
    
     /** * 删除
    
      * @param id
    
      */
    
     public void delStudent(String id){
    
     String sql = "delete from t_student where id = ?";
    
     jdbcTemplate.update(sql,id);
    
     System.out.println("删除数据成功!");
    
     }
    
     /** * 查询单个
    
      * @param id
    
      * @return
    
      */
    
     public Student queryStudent(String id){
    
     String sql = "select * from t_student where id = ?";
    
     Student student = null;
    
     try{
    
         student = jdbcTemplate.queryForObject(sql,
    
                 new BeanPropertyRowMapper<Student>(Student.class), id);
    
     }catch(Exception e){
    
         System.out.println("查询异常:" + e.getMessage());
    
     }
    
     return student;
    
     }
    
     /** * 查询所有
    
      * @return
    
      */
    
     public List<Student> queryStudentAll(){
    
     String sql = "select * from t_student";
    
     List<Student> studentList = jdbcTemplate.query(sql,
    
             new BeanPropertyRowMapper<Student>(Student.class));
    
     return studentList;
    
     }
    
 }
    
    
    
    

7. 创建StudentService接口

在src目录中建立com.wfit.service文件夹,并在该文件夹内生成StudentService.java接口文件。

复制代码
 public interface StudentService {

    
     public void addStudent(Student student);
    
     public void updateStudent(Student student);
    
     public void delStudent(String id);
    
     public Student queryStudent(String id);
    
     public List<Student> queryStudentAll();
    
 }
    
    
    
    

8. 创建StudentServiceImpl类

在src目录中建立名为com.wfit.service.impl的包结构,并在该包内生成StudentServiceImpl.java文件,用以具体实现StudentService接口所定义的功能。

复制代码
 @Service

    
 public class StudentServiceImpl implements StudentService {
    
  
    
     @Autowired
    
     private StudentDao studentDao;
    
     /** * 新增
    
      * @param student
    
      */
    
     @Override
    
     public void addStudent(Student student) {
    
     studentDao.addStudent(student);
    
     }
    
     /** * 修改
    
      * @param student
    
      */
    
     @Override
    
     public void updateStudent(Student student) {
    
     studentDao.updateStudent(student);
    
     }
    
     /** * 删除
    
      * @param id
    
      */
    
     @Override
    
     public void delStudent(String id) {
    
     studentDao.delStudent(id);
    
     }
    
     /** * 查询单个
    
      * @param id
    
      * @return
    
      */
    
     @Override
    
     public Student queryStudent(String id) {
    
     return studentDao.queryStudent(id);
    
     }
    
     /** * 查询所有
    
      * @return
    
      */
    
     @Override
    
     public List<Student> queryStudentAll() {
    
     return studentDao.queryStudentAll();
    
     }
    
 }
    
    
    
    

9. 编写测试类

在src目录中建立名为com.wfit.test的包结构,并在该包内部生成一个名为StudentTest.java的类文件。

复制代码
 public class StudentTest {

    
  
    
     private StudentService studentService;
    
  
    
     @Before
    
     public void init(){
    
     ApplicationContext context =
    
             new ClassPathXmlApplicationContext("applicationContext.xml");
    
     studentService = context.getBean("studentServiceImpl", StudentService.class);
    
     }
    
     /** * 测试新增
    
      */
    
     @Test
    
     public void testAdd(){
    
     Student student = new Student();
    
     student.setId("3");
    
     student.setName("zhangsan");
    
     student.setAge(20);
    
     studentService.addStudent(student);
    
     }
    
     /** * 测试修改
    
      */
    
     @Test
    
     public void testUpdate(){
    
     Student student = new Student();
    
     student.setId("3");
    
     student.setName("lisi");
    
     student.setAge(19);
    
     studentService.updateStudent(student);
    
     }
    
     /** * 测试删除
    
      */
    
     @Test
    
     public void testDel(){
    
     String id = "3";
    
     studentService.delStudent("3");
    
     }
    
     /** * 测试查询
    
      */
    
     @Test
    
     public void testQuery(){
    
     Student student = studentService.queryStudent("1");
    
     System.out.println(student);
    
     }
    
     /** * 测试查询所有
    
      */
    
     @Test
    
     public void testQueryAll(){
    
     List<Student> studentList = studentService.queryStudentAll();
    
     System.out.println(studentList);
    
     }
    
 }
    
    
    
    

10. 执行结果

实施testAdd测试后所获得的结果

执行testUpdate操作后的测试结果

对testDel进行执行后所获得的结果

对testQuery进行执行后所获得的结果

完成testQueryAll操作后的执行结果

全部评论 (0)

还没有任何评论哟~