步骤一:向pom中导入所需的依赖
步骤二:根据创建的表创建POJO类
步骤三:创建Dao接口(用注解的形式)
步骤四:创建Service接口和实现类
步骤五:添加jdbc.properties配置文件
步骤六:创建SpringConfig、MybatisConfig、JdbcConfig配置类
步骤七:编写运行类
Spring整合Mybatis主要做两件事:
1.使用Spring管理MyBatis中的SqlSessionFactory
2.使用Spring管理Mapper接口的扫描
主要使用MybatisConfig配置文件中的SqlSessionFactoryBean和MapperScannerConfigurer这两个类来完成。
整合中的问题:
UnsatisfiedPendencyException:创建名为“accountServiceImpl”的bean时出错:通过字段“accountDao”表示的未满足的依赖关系
创建名为“accountDao”的bean时出错
未满足的依赖关系通过bean属性”sqlSessionFactory”表示
查看报错信息,会发现多次提到bean出错,未满足依赖,但是检查MybatisConfig中定义bean的代码时,发现没有错,后来多次检查发现:
在创建sqlSessionFactrory对象时,在形参上添加参数dataSource时导入的是javax.activation.DataSource,导致在下面setDataSource获取对象时,填入dataSource会导致报错,必须要将类型转为javax.sql.DataSource。虽然转了后不再报错,但是我们这里是要对数据库进行操作,如果我们只是对一个对象参数类型进行转换,是解决不了问题的。最后将javax.activation.DataSource改为javax.sql.DataSource后,问题解决。
import javax.activation.DataSource和 import javax.sql.Datasourcede区别
import javax.activation.DataSource:
中定义的接口都跟I/O有关,其实现类 也打多与 网络、文件I/O相关,可以判断出,import javax.activation.DataSource是对资源文件的抽象,类似Reader、Writer等。
import javax.sql.Datasourcede:
是JDBC2.0标准中的规范,其目的是针对1.0标准中通过DriverManager.getConnection()方式获取到的数据库链接,消耗大、不可复用等缺点而推出的新一代规范。javax.sql.DataSource接口方法也只有两个:有参和无参的getConnection()方法。具体的实现有DruidDataSource和BasicDataSource(apache)等。这些数据源能提供可复用方式的数据库链接,大多采用连接池实现,好处就是:资源可以复用。