mybatis生成器/Spring整合Mybaits-xml配置/Spring新注解

Spring新注解.png

Spring新注解.pdf

1.Spring整合Mybaits-xml配置

Spring与Mybatis整合,涉及到哪个对象的管理

image-20220617145236788

步骤1: pom.xml添加相关依赖

 <dependencies>
    <!--spring-context依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.9.RELEASE</version>
    </dependency>

    <!--Mybatis依赖-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>

    <!--mysql驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.23</version>
    </dependency>

    <!--mybatis与spring的整合包-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.6</version>
    </dependency>

    <!--数据源jar-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.2.5</version>
    </dependency>

    <!--logback-->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.22</version>
    </dependency>
   
    <!--Spring整合mybatis必须添加此依赖才能访问数据库-->
    <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-jdbc</artifactId>
           <version>5.2.9.RELEASE</version>
     </dependency>

   
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>
</dependencies>

步骤2: 在applicationContext.xml配置数据源

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
jdbc.user=root
jdbc.pass=root

druid.initialSize=4
druid.maxActive=100
druid.minIdle=2

applicationContext.xml

<?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"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

   <!--在当前xml文件中加载外部properties配置文件-->
   <context:property-placeholder location="classpath:db.properties" />

   <!--数据源配置-->
   <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
       <property name="driverClassName" value="${jdbc.driver}" />
       <property name="url" value="${jdbc.url}" />
       <property name="username" value="${jdbc.user}" />
       <property name="password" value="${jdbc.pass}" />
       <property name="initialSize" value="${druid.initialSize}" />
       <property name="maxActive" value="${druid.maxActive}" />
       <property name="minIdle" value="${druid.minIdle}" />
   </bean>
   <!--会话工厂Bean-->
   <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
       <property name="dataSource" ref="dataSource" />
   </bean>

   <!--为指定包中的Mapper接口生成代理的子类对象-->
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <!--指定sqlSessionFactoryBean的名称-->
       <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean" />
       <!--指定数据访问层的包名,将所有该包下的接口生成代理子类对象存入spring容器中-->
       <property name="basePackage" value="com.woniu.mapper" />
   </bean>

</beans>

步骤3: 编写UserServiceTest测试类:

public class UserServiceTest {
   @Test
   public void testGetUserList(){
       //从容器中获取UserService
       ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
       UserService userService= (UserService)ac.getBean("userService");
       List<User> userList = userService.getUserList();
       for (User user : userList) {
           System.out.println(user);
       }
   }
}

问题1: 如果我们在spring整合mybatis后,还想编写sqlMapper.xml映射文件怎么办?

只需要按MyBatis默认的配置,以com.woniu.mapper 创建同样命名的路径名生成sqlMapper.xml映射文件 ,即可访问

也可以使用配置

 <!--会话工厂Bean-->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
   <!--数据源属性的注入-->
   <property name="dataSource" ref="dataSource" />
   <!--设置类型别名包-->
   <property name="typeAliasesPackage" value="com.woniu.entity" />
   <!--设置XML - sqlMapper映射文件的路径 如果路径名与Mapper包名一致,则可以省略-->
   <property name="mapperLocations" value="classpath:com/woniu/mapper/*.xml" />
   
</bean>

问题2: 如果我们还需要使用mybatis-config.xml配置文件怎么办?

 <!--会话工厂Bean-->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
   <!--数据源属性的注入-->
   <property name="dataSource" ref="dataSource" />
 
   <!--指定mybatis的核心配置文件-->
   <property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>

整合思路分析:      测试类  --> 业务层对象   --> dao层对象  -->  会话工厂对象   --> 数据源对象

2.Spring新注解

2-1 @Configuration

@Configuration -由这个注解的标注的类,作用就是相当于一个XML的配置文件

       |-也称为Java配置类

  • 当创建容器ApplicationContext 时会从该类上加载注解

    • ClassPathXMLApplicationContext("xml文件")

    • FileSystemXMLApplicationContext - [基于外部文件系统中的xml文件]

    • AnnotationApplicationContext("配置类<@Configuration>")[基于注解的配置来创建Spring工厂对象]

  • 获取容器时需要使用AnnotationApplicationContext实现类,来根据配置类创建容器对象

//相当于一个spring xml配置文件
@Configuration
public class SpringConfiguration {
   
}

2-2 @ComponentScan

作用:用于指定 spring 在初始化容器时要扫描的包。作用和在 spring 的 xml 配置文件中的:

<context:component-scan base-package="com .xxxx"/>是一样的

//相当于一个spring xml配置文件
@Configuration
@ComponentScan("com.woniu")
public class SpringConfiguration {

}

2-3 @PropertySource

作用:用于加载.properties 文件中的配置

相当于xm配置

 <!--在当前xml文件中加载外部properties配置文件-->
   <context:property-placeholder location="classpath:db.properties" />

2-4 @Import注解

作用:用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration 注解。当然,写上也没问题

属性:value[]:用于指定其他配置类的字节码

在刚才的SpringConfig类中 引入 JdbcConfig配置类:

@Configuration
@ComponentScan(basePackages = "com.woniu")
@Import(value = {JdbcConfig.class})
public class SpringConfig {
}

3.Spring整合Mybatis-注解配置-[重点]

  • SpringConfiguration.java配置类

//相当于一个spring xml配置文件
@Configuration
@ComponentScan("com.woniu")
@Import(JdbcConfig.class)  //引入外部的配置类文件,可以在MapperScannerConfigurer之前加载
public class SpringConfiguration {

   @Bean("sqlSessionFactoryBean")
   public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource) throws IOException {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        //设置dataSource
        sqlSessionFactoryBean.setDataSource(dataSource);
        sqlSessionFactoryBean.setTypeAliasesPackage("com.woniu.entity");

        //设置sqlMapper XML映射文件的路径
       ResourcePatternResolver loader=new PathMatchingResourcePatternResolver();
       sqlSessionFactoryBean.setMapperLocations(
               loader.getResources("classpath:com/woniu/mapper/*.xml"));

       //指定mybatis的核心配置文件
       // sqlSessionFactoryBean.setConfigLocation(
       //         loader.getResource("classpath:mybatis-config.xml"));

        return sqlSessionFactoryBean;
   }

   //用于生成Mapper接口代理子类对象,并存入spring容器中
   @Bean
   public MapperScannerConfigurer getMapperScannerConfigurer(){
       MapperScannerConfigurer configurer = new MapperScannerConfigurer();
       configurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
       configurer.setBasePackage("com.woniu.mapper");
       return configurer;
   }
}
  • JdbcConfig.java 子配置类文件

import javax.sql.DataSource;

@PropertySource("classpath:db.properties") //读取外部的properties文件信息
public class JdbcConfig {
   @Value("${jdbc.url}")
   private String url;

   @Value("${jdbc.driver}")
   private String driverClassName;

   @Value("${jdbc.user}")
   private String username;

   @Value("${jdbc.pass}")
   private String password;


   //@Bean注解 调用此方法,将返回值对象以方法名为id存入spring容器中
   @Bean("dataSource")
   public DataSource createDataSource(){
       DruidDataSource dataSource = new DruidDataSource();
       dataSource.setUrl(url);
       dataSource.setDriverClassName(driverClassName);
       dataSource.setUsername(username);
       dataSource.setPassword(password);
       dataSource.setInitialSize(4);
       dataSource.setMaxActive(100);
       dataSource.setMinIdle(2);
       return dataSource;
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值