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&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&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); } } }
1回答
同学你好,同学提供的代码中存在错误,老师无法进行测试,建议同学提供代码时确保代码可以正确运行:
1.HotelDao中引入了“import javax.swing.plaf.synth.SynthToolTipUI;”语句。
2.HotelService中使用了“hotelDao.insert(hotel);”语句,但HotelDao中没有定义insert方法。
3.JdbcTemplateTestor中使用了“hotelDao.insert(hotel);”,但HotelDao中没有定义insert方法。
4.建议提供代码时,一同提供对应的实体类。
祝学习愉快~
相似问题