mybatis-spring整合

第一步:在pom.xml中导入依赖

1.mysql依赖

         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>5.1.47</version>
         </dependency>

2.mybatis依赖

 <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.5.9</version>
 </dependency>

3.log4j依赖(打印日志)

 <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <version>1.2.17</version>
 </dependency>

4.lombok依赖

 <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.34</version>
 </dependency>

5.spring-context依赖

 <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context</artifactId>
             <version>5.3.9</version>
         </dependency>

6.aspectjweaver依赖

 <dependency>
             <groupId>org.aspectj</groupId>
             <artifactId>aspectjweaver</artifactId>
             <version>1.9.19</version>
         </dependency>

7.mybatis-spring依赖

 <dependency>
             <groupId>org.mybatis</groupId>
             <artifactId>mybatis-spring</artifactId>
             <version>2.1.2</version>
         </dependency>

8.spring-jdbc依赖(引入外部的数据源参数)

 <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-jdbc</artifactId>
             <version>5.3.9</version>
         </dependency>

9.druid依赖(druid连接池对象)

 <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>druid</artifactId>
             <version>1.2.23</version>
         </dependency>

10.spring-test依赖 (spring测试支持的依赖)

 <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-test</artifactId>
             <version>5.3.9</version>
         </dependency>

11.junit依赖

 <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.12</version>
             <scope>test</scope>
         </dependency>

第二步:在resources目录下创建config目录、log4j.properties文件和mapper目录;在config目录下创建spring-config文件、spring-mybatis文件、mybatis-config.xml文件和jdbc.properties文件(我相信你们都有设置长用的一些文件的配置);在mapper目录下创建与在Java目录下mapper中类名相同的xml文件

spring-config文件和spring-mybatis文件的创建需要用到导入spring依赖后一些东西看图:

再创建好的spring-config.xml中添加 包扫描-->ioc

 <context:component-scan base-package="cn.kgc.spring.day05"></context:component-scan>
     <!-- base-package位置的包名根据自己的来修改-->

第三步:在Java包中建好需要用到的一些基础结构(entity、mapper、service、servlet)里面改创建的创建

entity:需要用到的注解有:@Data

mapper:不需要注解,后续会在配置文件中写

service:需要用到注解有:@Service ;在service中不需要用new创建mapper层中的对象但需要用到@Autowired 注解;还有实现接口的重写接口中方法的注解 @Override(基本不需要自己去写)

servlet:需要用到的注解有:@Controller ;在servlet中不需要用new创建service层中的对象但需要用到 @Autowired 注解;

第四步:整合spring框架和mybatis框架

点开已经创建好的spring-mybatis.xml文件

1.引入外部的数据源参数

  <context:property-placeholder location="classpath:config/jdbc.properties"></context:property-placeholder><!-- 这玩意也需要导包-->

2.托管druid连接池对象

 <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
     <!-- id中的名字可以随意取,最好是见名知意-->
         <property name="username" value="${jdbc.username}"></property>
         <property name="password" value="${jdbc.password}"></property>
         <property name="driverClassName" value="${jdbc.driver}"></property>
         <property name="url" value="${jdbc.url}"></property>
     </bean>

3.sqlSessionFactory对象:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
         <!--        数据源参数配置-->
         <property name="dataSource" ref="druidDataSource"></property>
         <!--        mapper文件位置-->
         <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
         <!-- 实体类起别名设置-->
         <property name="typeAliasesPackage" value="cn.kgc.spring.day05.entity"></property>
     <!-- 其中value的位置每个人都不一样,换成自己entity包的位置,需要全限定包名-->
         <!--        指定mybatis的配置文件-->
         <property name="configLocation" value="classpath:config/mybatis-config.xml"></property>
     </bean>
     <!-- 这一步mybatis-config.xml文件中还有一些配置没有引入spring-mybatis中可以直接把mybatis-config.xml引入-->

4.mapper接口的扫描 将接口生成的代理对象托管到spring容器中

 <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
         <property name="basePackage" value="org.example.day05.mapper"/>
      <!-- value中的路径名得改成自己的-->
     </bean>

没有这一步的话

1.无法自动注入Mapper:由于Mapper接口没有被Spring容器管理,因此你无法在其他Spring Bean中通过@Autowired或其他注入方式自动注入这些Mapper接口。这会导致编译错误或运行时异常,因为Spring容器无法找到对应的Bean来注入。

2.MyBatis无法找到Mapper:MyBatis本身依赖于Spring容器来查找Mapper接口,以便在运行时动态创建它们的实现。如果没有这个配置,MyBatis将无法找到这些Mapper接口,从而无法执行任何数据库操作。

5.把mybtis-config.xml文件中已引入spring-mybatis文件中的一些东西可以删除了,看图:

6.点开spring-config.xml将spring-mybatis.xml导入进来通过代码

<import resource="spring-mybatis.xml"></import>

第五步:以上做完基本上就配置好了,还有就是和测试类创建关系了

创建servlet的测试类在测试类上添加注解@ContextConfiguration("classpath:config/spring-config.xml") @RunWith(SpringJUnit4ClassRunner.class)

注解添加后就是测试了,就不像以前需要创建代理对象了,全都省略了,真不错以下代码就不需要了

 ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("config/spring-config.xml");
        UserServlet userServlet = ac.getBean("userServlet", UserServlet.class);

就可以直接通过这两步直接测试了

补充:添加了一个事务的管理

在pom.xml中添加spring-tx依赖(spring事务支持的依赖)

 <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-tx</artifactId>
             <version>5.3.9</version>
         </dependency>

在spring-mybatis中添加事务的管理对象

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

在开启开启事务注解的支持

 xmlns:tx="http://www.springframework.org/schema/tx"
 需要导这个包中的结尾为/tx
 <tx:annotation-driven></tx:annotation-driven>

在点到service的实现类添加Transactional注解有两种注解方式

1.添加在类名上,这就是整个类都会对事务管理

2.添加在方法上,就是对那个方法的事务的管理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值