Spring对于Mybatis的整合

最近学了黑马程序员的课程,用Spring对之前项目的Mybatis进行整合,步骤如下
首先第一步在maven中导入坐标

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

    <dependency>
<!--      数据源坐标-->
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.15</version>
    </dependency>

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

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>
    
    <dependency>
<!--      Spring整合Mybatis的jar-->
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>


在这里插入图片描述
先写了一个小型的项目,结构如图,有DAO层和Service层,测试类test相当于将来webapp项目的Servlet。
使用spring纯注解开发模式,首先新建一个config包,里面新建三个java类,分别是SpringConfig(Spring核心配置),MybatisConfig(Mybatis配置)以及JdbcConfig(Jdbc配置)。

SpringConfig

@Configuration //声明该类是核心配置类
@ComponentScan("com.itheima") //Spring注解扫描,可扫描到itheima包下面的Component配置类
@PropertySource("classpath:jdbc.properties") //引入properties文件
public class SpringConfig {
}

JdbcConfig配置类

@Component
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 ;


    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(username);
        ds.setPassword(password);
        return  ds;
    }
}

注意在这里的类似于jdbc.driver等变量是在配置文件中定义完成的
在这里插入图片描述

Mybatis配置

@Component
public class MybatisConfig {

    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
        SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
        ssfb.setTypeAliasesPackage("com.itheima.pojo");
        ssfb.setDataSource(dataSource);
        return ssfb;
    }

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        msc.setBasePackage("com.itheima.dao");
        return msc;
    }

}

此处代码在往后的项目中可直接复制,只需更改 ssfb.setTypeAliasesPackage和 msc.setBasePackage两个值即可。
之后我写了一个查询所有方法来验证能否正常在数据库中读取数据。

UserDao接口代码

@Component
public interface UserDao {

    @Select("select * from tb_user")
    List<User> findAll();
}

UserService接口代码

public interface UserService {

    List<User> findAll();
}

UserServiceImpl实现类代码

public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    public List<User> findAll(){
        return userDao.findAll();
    }
}

在这里使用注解@AutoWired自动装配UserDao对象。

测试类如下

public class test {
    public static void main(String[] args) {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
        UserService userService = ctx.getBean(UserService.class);
        List<User> all = userService.findAll();
        System.out.println(all);
    }
}

可以正常读出数据库存储的数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值