Spring整合Mybatis
首先看一下项目目录
因为以前所有的知识点都在一个模块里,而且目录比较混乱
所以对模块重构了一下
首先我们要在pom.xml文件中声明所需要的依赖
新增这两个依赖
<!-- 利用spring操作数据库依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.23</version> </dependency> <!--mybaties 与spring整合的依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.6</version> </dependency>
然后介绍一下各个类的作用
Domain是对应数据库的类实体,这个类不需要声明为Bean
package com.demo.Domain; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor @Data public class User { private int id; private String Password; }
然后是config文件,里边是各种配置类
SpringConfig配置类
package com.demo.config; import org.springframework.context.annotation.*; //声明这是一个配置类 @Configuration
//扫描所有的Bean文件 @ComponentScan("com.demo") //@PropertySource("Jdbc.property")
//引用其他的配置类,各个配置类分开 @Import({JdbcConfig.class, MybatisConfig.class}) public class SpringConfig { }
JdbcConfig配置类
package com.demo.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import javax.sql.DataSource; //@Configuration public class JdbcConfig { //首先我们定义一个方法来获得要管理的对象 //然后我们通过@Bean来表示当前方法是的返回值是一个Bean @Bean public DataSource getDataSource(){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/mp"); dataSource.setUsername("root"); dataSource.setPassword("root"); return dataSource; } }
为什么要提供一个DataSource的Bean
因为利用Spring链接数据库是我们要创建一个SqlSeesionFactoy对象
原来是通过xml文件来配置相关的信息
现在我们直接通过DataSource就能创建SqlSeesionFactoy对象
package com.demo.config; import com.demo.Dao.UserDao; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.mapper.MapperScannerConfigurer; import org.springframework.context.annotation.Bean; import javax.sql.DataSource; public class MybatisConfig { //在spring中 如果想要动用第三方类形成的Bean //我们直接利用形参传入即可 //因为spring会自动扫描所需的依赖 //前提是已经把第三方类声明为bean类型 //mybitas通过sqlSessionFactor来创建sqlsession对象 //sqlSession是操作数据库的类
//Spring提供了SqlSessionFactoryBean来简化这个过程
//我们只需要传入一个DataSource对象就可完成创建
//同时还要说明数据库查询方法对应的接口
@Bean public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setTypeAliases(User.class); sessionFactoryBean.setDataSource(dataSource); return sessionFactoryBean; }
//设置Mapper对应的类 @Bean public MapperScannerConfigurer mapperScannerConfigurer(){ MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setBasePackage("com.demo.Dao"); return mapperScannerConfigurer; } }
Config各个类介绍完毕
然后Dao是我们实现数据库查询的接口
也是利用注解开发的
UserDao
package com.demo.Dao; import com.demo.Domain.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Component; import java.util.List; @Mapper public interface UserDao { @Select("select * from user") public List<User> getAll(); }
@Mapper 也是把这个接口声明为一个Bean 同时也说明这是一个Mapper类
然后就是服务层Service
首先是接口
package com.demo.Service; import com.demo.Dao.UserDao; import com.demo.Domain.User; import java.util.List; public interface UserService { public List<User> getAll(); }
然后是实现类
@Service说明这也是一个Bean
@Autowired 自动装填
因为我们已经把UserDao声明为一个Bean了
package com.demo.Service.impl; import com.demo.Dao.UserDao; import com.demo.Domain.User; import com.demo.Service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; public List<User> getAll() { return userDao.getAll(); } }
最后是测试类
package com.testDemo; import com.demo.Domain.User; import com.demo.Service.UserService; import com.demo.Service.impl.UserServiceImpl; import com.demo.config.SpringConfig; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.List; public class Test { @org.junit.Test public void test(){ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class); UserService userService = (UserService) applicationContext.getBean(UserServiceImpl.class); List<User> userList = userService.getAll(); for(User user:userList){ System.out.println(user.getId()+" "+user.getPassword()); } } }标签:JAVA,Spring,org,Bean,demo,Mybatis,import,com,public From: https://www.cnblogs.com/zzRh-5479/p/16739224.html