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.建议提供代码时,一同提供对应的实体类。
祝学习愉快~
相似问题