spring测试题

 一、题

1. 按照如下表结构创建数据库 mydb 及停车场车辆管理表
car 15 分)
数据及表的创建,参考如下:( 10 分)

 测试数据如下:(5分)

2.完成spring框架和mybatis框架的整合(15分)

使用xml配置或者注解方式完成框架的整合配置

3. 使用 spring 框架整合 mybatis 完成表的增删改查操作
50 分)
1 )完成所有车辆信息的查询;( 15 分)
2 )完成车辆信息的新增;( 15 分)
3 )完成车辆信息删除;( 10 分)
4 )完成车辆信息的修改;( 10 分)
4. 使用 AOP 完成功能增强( 20 分)
1 )使用 AOP 完成查询功能的后置日志输出;( 10 分)
2 )使用 AOP 完成增删改的前置权限验证;( 10 分)

 二、准备工作:

创建如下数据库:

drop table if exists car;
create table car (
cid int(11) primary key not null AUTO_INCREMENT,
cnumber varchar(20),
type varchar(20),
owner varchar(20),
phone varchar(11),
mark varchar(50)
);

insert into car values (1, '豫A34G87', '轿车', '王文琦', '13895647594','临时车');
insert into car values (2, '豫B38379', 'SUV', '张玉梅', '13687594623','月卡');
insert into car values (3, '豫CR9703', '卡车', '刘兆鹏', '13975462146','年卡');

select * from car;

创建如下所示项目结构:

 三、实操

1 创建bean
创建一个model包并在其下创建一个Car.java文件。

public class Car {
    private Integer cid;
    private String cnumber;
    private String type;
    private String owner;
    private String phone;
    private String mark;

2 创建DAO接口  
创建一个包dao,并在其下创建一个CarrDao.java文件作为DAO接口。 

package com.su.dao;

import com.su.bean.Car;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface CarDao {
//添加
@Insert("insert into car(cnumber,type,owner,phone,mark) values(#{cnumber},#{type},#{owner},#{phone},#{mark})")
int add(Car car);
//修改
@Update("update car set cnumber=#{cnumber},type=#{type},owner=#{owner},phone=#{phone},mark=#{mark} where cid=#{cid}")
int update(Car car);
//删除
@Delete("delete from car where cid=#{cid}")
int delete(int cid);
//查询
@Select("select * from car")
List<Car> selectAll();

}

3 创建CarService接口
创建一个包service,并在其下创建一个CarService.java文件作为service接口。

package com.su.service;

import com.su.bean.Car;

import java.util.List;

public interface CarService {
    //查询
    List<Car> findAll();
    //添加
    int add(Car car);
    //修改
    int update(Car car);
    //删除
    int delete(int cid);
}

4 实现CarService接口  
在service包下创建一个CarServiceImpl.xml文件作为上一步创建的CarService接口的实现

package com.su.service.impl;

import com.su.bean.Car;
import com.su.dao.CarDao;
import com.su.service.CarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class CarServiceImpl implements CarService {
    @Autowired
    CarDao carDao;
    @Override
    public List<Car> findAll() {
        return carDao.selectAll();
    }

    @Override
    public int add(Car car) {
        return carDao.add(car);
    }

    @Override
    public int update(Car car) {
        return carDao.update(car);
    }

    @Override
    public int delete(int cid) {
        return carDao.delete(cid);
    }
}

5 创建MyBatis的配置文件  
在src下创建一个mybatis.xml文件,由于我们的数据源部分是要交给Spring管理,所以此处的配置文件只包含xml映射文件的位置信息。 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="logImpl" value="log4j"/>
    </settings>
</configuration>

6 创建jdbc.properties和log4j.properties外部文件

jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mysql
jdbc.user=root
jdbc.password=root

 log4j.properties

log4j.rootLogger=TRACE,stdout  

log4j.appender.stdout=org.apache.log4j.ConsoleAppender   
#log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout   


log4j.appender.logfile=org.apache.log4j.FileAppender   
log4j.appender.logfile.File=wocao.log   
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout   
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n   
log4j.logger.mapperNS =TRACE

log4j.logger.com.mybatis=DEBUG  
log4j.logger.com.mybatis.common.jdbc.SimpleDataSource=DEBUG   
log4j.logger.com.mybatis.common.jdbc.ScriptRunner=DEBUG   
log4j.logger.com.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG   
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG  
log4j.logger.java.sql.ResultSet=DEBUG  

log4j.logger.org.springframework=error 
log4j.logger.org.apache=ERROR  
log4j.logger.org.mybatis=DEBUG 

7 在Spring中配置数据源  
在src下创建一个spring.xml文件作为Spring的配置文

<?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"
       xmlns:aop="http://www.springframework.org/schema/aop"
       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
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--扫描器扫描-->
    <context:component-scan base-package="com.su"/>
<!--引入外部文件-->
    <context:property-placeholder location="jdbc.properties"/>
<!--1.加载外部配置文件-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.user}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>
<!--2.配置mybatis的SqlssionFactory,自动获得核心对象Sqlsession对象,可以自动装配mapper接口的代理对象-->
    <bean id="factoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="mybatis.xml"/>
        <property name="typeAliasesPackage" value="com.su.bean"/>
    </bean>
<!--3.配置mapper映射器,告诉mybatis要创建那些接口的代理对象-->
    <bean id="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.su.dao"/>
    </bean>
    <aop:aspectj-autoproxy/>
        </beans>

 8 创建advice增强类,使用AOP完成查询功能的后置日志输出。使用AOP完成增删改的前置权限验。

package com.su.advice;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

//增强类Advice
@Component
@Aspect
public class Advice {
    @Before("execution(int com.su.service.impl.*.*(..))")
    public void select() {
        System.out.println("前置权限验证.....");
    }

    @AfterReturning("execution(* com.su.service.impl.*.findAll())")
    public void after() {
        System.out.println("后置日志输出.....");
    }
}


9 测试  
在src下创建一个servlet包,并在其下创建一个test01.java文件 

package com.su.servlet;

import com.su.bean.Car;
import com.su.service.CarService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class Test01 {
    CarService carService;
//    全查
    @Test
    public void findAllTest() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        carService = context.getBean(CarService.class);
        List<Car> carList = carService.findAll();
        for (Car car : carList) {
            System.out.println(car);
        }
    }
//    添加
    @Test
    public void addTest() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        carService = context.getBean(CarService.class);
        Car car = new Car();
        car.setCnumber("豫P15445");
        car.setType("越野车");
        car.setOwner("赵四");
        car.setPhone("12345678451");
        car.setMark("月卡");
        int n = carService.add(car);
        if (n > 0) {
            System.out.println("添加成功!");
        }else {
            System.out.println("添加失败!");
        }
    }
//    删除
    @Test
    public void deleteTest() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        carService = context.getBean(CarService.class);
        int n = carService.delete(2);
        if (n > 0) {
            System.out.println("删除成功!");
        }else {
            System.out.println("删除失败!");
        }
    }
//    修改
    @Test
    public void updateTest() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        carService = context.getBean(CarService.class);
        Car car = new Car();
        car.setCid(5);
        car.setCnumber("豫P15445");
        car.setType("越野车");
        car.setOwner("张三");
        car.setPhone("12345678451");
        car.setMark("年卡");
        int n = carService.update(car);
        if (n > 0) {
            System.out.println("修改成功!");
        }else{
            System.out.println("修改失败!");
        }
    }
}

 10 运行结果展示(查询功能的后置日志输出,增删改的前置权限验

全查 

添加

修改

 删除

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值