第十章 MyBatis与Spring的整合

10.1.2 编写配置文件

在Eclipse中,创建一个test1109e10的Web项目,将JAR包添加到项目的lib目录下,并发布到类路径下。如下图所示:

 

在项目的src目录下,分别创建db.properties文件、Spring的配置文件以及MyBatis的配置文件,如下图所示:

db.properties

 

applicationContext.xml

 

mybatis-config.xml

 

 

 

10.2 传统DAO方式的开发整合

1、实现持久层

在src目录下,创建一个com.itheima.po包,并在包中创建持久化类Customer,在Customer类中定义相关属性和方法后,如下图所示:

Customer.java

 

在com.itheima.po包中,创建映射文件CustomerMapper.xml,在该文件中编写根据id查询客户信息的映射文件,如下图所示:

CustomerMapper.xml

 

在MyBatis的配置文件mybatis-config.xml中,配置映射文件CustomerMapper.xml的位置,具体如下图所示:

 

 

2、实现Dao

在src目录下,创建一个com.itheima.dao包,并在包中创建接口CustomerDao,在接口中编写一个通过id查询客户的方法findCustomerById(),如下图所示:

CustomerDao.java

 

在src目录下,创建一个com.itheima.impl包,并在包中创建CustomerDao接口的实现类CustomerDaoImpl,编辑后的如下图所示:

CustomerDaoImpl.java

 

在Spring的配置文件applicationContext.xml中,编写实例化CustomerDaoImpl的配置,代码如下图所示:

 

 

3、整合测试

在src目录下,创建一个com.itheima.test包,在包中创建测试类DaoTest,并在类中编写测试方法findCustomerByIdDaoTest(),如下图所示:

DaoTest()

 

在上述方法中,采用的是根据容器中Bean的id来获取指定Bean的方式。

另一种获取Bean的方式,即根据类的类型来获取Bean的实例,采用这种方式,只需将第17~18行代码替换成如下:

这样在获取Bean的实例时,就不需要在进行强制类型转换了。

 

使用JUnit4执行上述方法后,控制台的输出结果如下图所示:

 

可以看出,通过CustomerDao实例的findCustomerById()方法已经查询出了id为1的客户信息,这也就说明了MyBatis与Spring整合成功。

 

 

 

10.3 Mapper接口方式的开发整合

10.3.1 基于MapperFactoryBean的整合

在src目录下,创建一个com.itheima.mapper包,并在包中创建CustomerMapper接口以及对应的映射文件,编辑后如下图所示:

CustomerMapper.java

 

CustomerMapper.xml

 

在MyBatis的配置文件中,引入新的映射文件,代码如下所示:

 

在Spring的配置文件中,创建一个id为customerMapper的Bean,代码如下图所示:

 

在测试类DaoTest中,编写测试方法findCustomerByIdMapperTest(),具体如下图所示:

 

上述方法,通过Spring容器获取了CustomerMapper实例,并调用了实例中的findCustomerById()方法来查询id为1的客户信息。

使用JUnit4执行上述方法后,控制台的输出结果如下图所示:

从中可以看出,通过Mapper接口的方式,同样查询到了相应的客户信息。

 

 

 

10.4 测试事务

在CustomerMapper接口中,编写测试方法addCustomer(),代码如下图所示:

 

编写完接口中的方法后,在映射文件CustomerMapper.xm中编写执行插入操作的SQL配置,代码如下图所示:

 

在src目录下,创建一个com.itheima.service包,并在包中创建接口CustomerService,在接口中编写一个添加客户方法addCustomer(),文件如下图所示:

CustomerService.java

 

在src目录下,创建一个com.itheima.service.impl包,并在包中创建CustomerService接口的实现类CustomerServiceImpl,来实现接口中的方法,如下图所示:

CustomerServiceImpl.java

 

在Spring的配置文件中,编写开启注解的配置代码,代码如下图所示:

 

在com.itheima.test包中,创建测试类TransactionTest(),在测试类的main()方法中编写测试事务执行的代码,代码如下图所示:

TransactionTest.java

 

在上述文件中,首先获取了CustomerService的实例,然后创建了Customer对象,并向对象中添加属性值,最后调用了实例的addCustomer()方法执行添加客户操作。

在运行测试方法之前,先来查看一下数据库中已有的数据,如下图所示:

 

从上图可以看到,此时数据表中只有4条数据。执行测试类中的main()方法后,控制台的输出结果如下图所示:

 

从上图可以看到,程序已经执行了插入操作,并在执行到错误代码时抛出了异常信息。再次查询t_customer表,其表中的数据如下图所示:

 

从上图可以看到,新添加的数据已经存储到了t_customer表中,这说明项目中的事务管理没有起作用。

此时将@Transactional前面的注释删除:

 

再次执行测试类中的main()方法后,虽然Eclipse的控制台也会抛出异常信息,但是此时t_customer表中依然只有4条数据,如下图所示:

 

这也就说明项目中的事务配是正确的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值