Spring—注解驱动开发整合myBatis

Spring—注解驱动

注解驱动,就是以注解的形式去替代applicationConfig.xml文件开发项目;而注解仅仅是一个标记,存储了少量的内容信息,具体功能是由框架去实现。

一、常用注解

@Component
//方式1
@Component
public class JdbcConfig {}
//方式2
@Component"jdbcConfig"public class JdbcConfig {}

@Component是类的注解;@Controller 、 @Service 、 @Repository是@Component的衍生,他们功能都是相同的,只是为了在业务层,数据层,表现层之间有个明显的区分。

@Bean
public class JdbcConfig {
    @Bean("dataSource")
    public DataSource getDataSource() {
        DataSource dataSource = new DruidDataSource();
      	dataSource.userName("root");
        return dataSource;
    }
}

@Bean加载第三方资源;设置该方法的返回值作为spring管理的bean。

@Value
@Component
public class Student{
  // 1. 属性赋值,省略set方法
  @Value("张三")
  private String username;
  
  // 2. 方法传参, 对方法的所有参数全部赋值
  @Value("3")
  public void setNum(int num){
    this.num=num;
  }
  // 3. 读取properties文件属性值
  @Value("${jdbc.username}")
  private String username;
}

@Value是一个为属性赋值或方法传参的注解,Value值仅支持非引用数据类型和SpEL表达式。

@Autowired
@Autowired
private UserDao userDao

@Autowired是仅支持引用类型的属性注入和方法参数传递,默认按已存在IoC容器中的类型装配。

@PropertySource
@PropertySource(value="classpath:fileName.properties")
public class ClassName{
  @Value("${password}")
    private String password;
}

@PropertySource是加载properties属性值的注解,不支持*通配格式,一旦加载,所有 spring 控制的 bean 中均可使用对应属性值。

@Configuration
@Configuration//标记当前类是一个配置类
@ComponentScan("scanPackage")
public class SpringConfig ClassName{}

@Configuration是spring核心配置类的注解,而spring中所有bean都需要@ComponentScan注解进行扫描。

@import
@Configuration
@ComponentScan("scanPackage")
@import("jdbc.Class")
public class SpringConfig ClassName{}

@import的作用是导入第三方 bean 作为 spring 控制的资源;而第三方Bean不需要声明为一个bean,直接以.Class形式导入进行spring核心配置类。

二、注解总结

(一) bean注入方式

1、加在类上:@Component、@Controller、@Service、@Repository。

2、加方法上:@Bean

3、导入的类:@import

(二) bean属性注入

1、注入非引用数据类型:@Value

2、注入引用的数据类型:@Autowired

(三) bean加载配置文件

@PropertySource,在@Value中使用${属性名}

(四) bean的包扫描

@ComponentScan(“scanPackage”)

三、注解开发

(一) 程序运行流程

加载spring核心配置类–>添加bean到容器中(解析bean,相关注解,@Bean)–>bean加载完成即可运行业务程序。

(二)整合mybatis

整合mybatis 就是把相应技术的关键类对象存放到spring的容器中

1、实体类:根据数据库表,遵循ORM映射关系创建。

2、持久层:CRUD方法的创建,定义对应的SQL语句。

  • 注解形式

    public interface AccountDao {
        @Insert("insert into account(name,money)values(#{name},#{money})")
        void save(Account account);
    }
    
  • XML配置

    <delete id="delete" parameterType="java.lang.String">
            delete from st_catalog where id = #{id}
    </delete>
    

3、业务层:调用持久层

  • 业务层接口

    public interface AccountService {
        void save(Account account);
    }
    
  • service实现类

    //在service业务层实现类上注入bean
    @Service("accountService")
    public class AccountServiceImpl implements AccountService {
      	//注入dao持久层bean
        @Autowired
        private AccountDao accountDao;
        public void save(Account account) {
            accountDao.save(account);
        }
    

4、spring核心配置

  • springConfig核心配置类

    //1.注入spring核心配置bean
    @Configuration
    //2.扫描所有的bean
    @ComponentScan("com")
    //3.注入properties文件
    @PropertySource("classpath:jdbc.properties")
    //4.导入数据源对象和mapper动态代理对象
    @Import({JdbcConfig.class,MyBatisConfig.class})
    public class SpringConfig {
    }
    
  • JdbcConfig配置类

    public class JdbcConfig {
      	//声明数据源参数,并注入属性值
        @Value("${jdbc.driver}")
        private String driver;
        @Value("${jdbc.url}")
        private String url;
        @Value("${jdbc.username}")
        private String userName;
        @Value("${jdbc.password}")
        private String password;
      
    		//获取数据源对象,赋值,并注入IoC容器
        @Bean("dataSource")
        public DataSource getDataSource(){
            DruidDataSource ds = new DruidDataSource();
            ds.setDriverClassName(driver);
            ds.setUrl(url);
            ds.setUsername(userName);
            ds.setPassword(password);
            return ds;
        }
    }
    
  • MyBatisConfig配置类

    public class MyBatisConfig {
    		
      	//spring整合mybatis后控制的创建连接用的对象
        @Bean
        public SqlSessionFactoryBean getSqlSessionFactoryBean(@Autowired DataSource dataSource){
            SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
            ssfb.setTypeAliasesPackage("com.mine.domain");
            ssfb.setDataSource(dataSource);
            return ssfb;
        }	
    		
      	//加载mybatis映射配置的扫描,将其作为spring的bean进行管理
        @Bean
        public MapperScannerConfigurer getMapperScannerConfigurer(){
            MapperScannerConfigurer msc = new MapperScannerConfigurer();
            msc.setBasePackage("com.mine.dao");
            return msc;
        }
    }
    

5、依赖资源坐标

  •  <artifactId>mybatis</artifactId>
     <artifactId>mysql-connector-java</artifactId>
     <artifactId>spring-context</artifactId>
     <artifactId>spring-jdbc</artifactId>
     <artifactId>druid</artifactId> 
     <artifactId>mybatis-spring</artifactId>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值