Spring对于Mybatis的整合

Spring对于Mybatis的整合,第1张

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


      org.springframework
      spring-context
      5.2.10.RELEASE
    

    

      com.alibaba
      druid
      1.0.15
    

    
      org.mybatis
      mybatis
      3.5.6
    

    
      mysql
      mysql-connector-java
      5.1.47
    
    
    
      org.springframework
      spring-jdbc
      5.2.10.RELEASE
    
    
    

      org.mybatis
      mybatis-spring
      1.3.0
    



先写了一个小型的项目,结构如图,有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 findAll();
}
UserService接口代码
public interface UserService {

    List findAll();
}
UserServiceImpl实现类代码
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    public List 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 all = userService.findAll();
        System.out.println(all);
    }
}

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/921554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存