Spring JDBC与事务管理 作业3-2

来源:3-2 自由编程

rudtjd

2023-03-11 14:41:25

<?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:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url"
                  value="jdbc:mysql://localhost:3306/jdbc_imooc?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>


    <bean id="hotelDao" class="com.imooc.spring.jdbc.dao.HotelDao">
        <property name="jdbcTemplate" ref="jdbcTemplate"/>
    </bean>

    <bean id="hotelService" class="com.imooc.spring.jdbc.service.HotelService">
        <property name="hotelDao" ref="hotelDao"/>
        <property name="transactionManner" ref="transactionManner"/>
    </bean>

    <bean id="transactionManner" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <tx:advice id="txAdvice" transaction-manager="transactionManner">
        <tx:attributes>
            <tx:method name="batchImport" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <aop:pointcut id="pointcut" expression="execution(* com.imooc..*Service.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
    </aop:config>


</beans>
package com.imooc.spring.jdbc.service;

import com.imooc.spring.jdbc.dao.HotelDao;
import com.imooc.spring.jdbc.entity.Hotel;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;


public class HotelService {
    private HotelDao hotelDao;

    private DataSourceTransactionManager transactionManager;

    public void batchImport() throws ParseException {
        for ( int i=1; i<=5; i++){
            String date1 = "2023-03-11";
            String date2 = "2023-03-13";
            SimpleDateFormat simpleDateFormat =  new SimpleDateFormat("yyyy-MM-dd");
            Hotel hotel = new Hotel();
            hotel.setOrderNO(1000+i);
            hotel.setCity("厦门");
            hotel.setPrice(699f);
            hotel.setHotelname("AmoyHotel");
            hotel.setArriveDate(simpleDateFormat.parse(date1));
            hotel.setLeaveDate(simpleDateFormat.parse(date2));
            hotelDao.insert(hotel);
        }
    }

    public HotelDao getHotelDao() {
        return hotelDao;
    }

    public void setHotelDao(HotelDao hotelDao) {
        this.hotelDao = hotelDao;
    }

    public DataSourceTransactionManager getTransactionManager() {
        return transactionManager;
    }

    public void setTransactionManner(DataSourceTransactionManager transactionManner) {
        this.transactionManager = transactionManager;
    }
}
package com.imooc.spring.jdbc.dao;

import com.imooc.spring.jdbc.entity.Hotel;
import javafx.geometry.HPos;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.swing.plaf.synth.SynthToolTipUI;
import java.util.List;

public class HotelDao {
    private JdbcTemplate jdbcTemplate;

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
        // 6.在DAO中增加插入多条数据的方法,向数据库插入5条数据
    public void batchImport(Hotel hotel){
        String sql = "insert into hotel(orderno,city,price,hotelname,arrivedate,leavedate) values(?,?,?,?,?,?)";
        jdbcTemplate.update(sql,new Object[]{
           hotel.getOrderNO(),hotel.getCity(),hotel.getPrice(),hotel.getHotelname(),hotel.getArriveDate(),hotel.getLeaveDate()
        });
    }

}
import com.imooc.spring.jdbc.service.HotelService;
import com.imooc.spring.jdbc.dao.HotelDao;
import com.imooc.spring.jdbc.entity.Hotel;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class JdbcTemplateTestor {
    @Resource
    private HotelDao hotelDao;
    @Resource
    private HotelService hotelService;
        // 6.在Service中增加批量插入数据的方法,调用DAO中的批量插入数据方法
    @Test
    public void testBatchImport() throws ParseException {
        hotelService.batchImport();
        System.out.println("导入成功");
    }

    // 7.在DAO中增加插入多条数据的方法,向数据库插入5条数据
    @Test
    public void testBatchImport1() throws ParseException {
        for ( int i=1; i<=5; i++){
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String date1 = "2023-04-30";
            String date2 = "2023-05-03";
            Hotel hotel = new Hotel();
            hotel.setOrderNO(1005+i);
            hotel.setArriveDate(simpleDateFormat.parse(date1));
            hotel.setLeaveDate(simpleDateFormat.parse(date2));
            hotel.setCity("福州");
            hotel.setPrice(499f);
            hotel.setHotelname("FuzhouHotel");
            hotelDao.insert(hotel);
        }
    }
}

https://img.mukewang.com/climg/640c2291091aede107040453.jpg

写回答

1回答

好帮手慕小蓝

2023-03-11

同学你好,同学提供的代码中存在错误,老师无法进行测试,建议同学提供代码时确保代码可以正确运行:

1.HotelDao中引入了“import javax.swing.plaf.synth.SynthToolTipUI;”语句。

2.HotelService中使用了“hotelDao.insert(hotel);”语句,但HotelDao中没有定义insert方法。

3.JdbcTemplateTestor中使用了“hotelDao.insert(hotel);”,但HotelDao中没有定义insert方法。

4.建议提供代码时,一同提供对应的实体类。

祝学习愉快~

0
hudtjd
hp>喔好~因为把前面的题目省略掉了所以导致老师那里无法运行

h023-03-11
共1条回复

0 学习 · 9886 问题

查看课程