- 1、环境搭建
- 1.1 导入jar包
- 1.2、配置文件
- 1.3、创建数据库和表
- 2、编写dao和service
- 2.1、编写dao接口
- 2.2、编写service接口
- 2.3、Service实现类
- 3、配置类
- 3.1、spring配置类
- 3.2、
- 4、测试类
- 4.1、方式1:整合Junit
- 4.2、方式2:手动创建工厂
之前使用的持久层框架是MyBatis, 现在将Mybatis框架整合到Spring框架中,由Spring统一管理.其核心思路是把Mapper对应的实现类对象存放在IOC容器中.
整体思路:
1.按照原来的方式搭建Mybatis框架
2.按照原来的方式搭建Spring框架
3.把sqlMapConfig.xml和MyBatisUtils工具类替换成MyBatisConfig配置类
4.在SpringConfig配置类中做特定修改
需求: 通过Spring+Mybatis整合,把一个用户的信息添加到数据库中.
实现步骤:
1.环境搭建
2.编写Dao和Service
3.书写配置类
4.测试
完整的项目结构如下:
这里我使用web项目
还有一个maven项目版的pom文件
1.2、配置文件4.2.4.RELEASE org.springframework spring-beans${org.springframework.version} org.springframework spring-core${org.springframework.version} org.springframework spring-context${org.springframework.version} org.springframework spring-expression${org.springframework.version} org.springframework spring-context-support${org.springframework.version} org.springframework spring-aop${org.springframework.version} org.springframework spring-aspects${org.springframework.version} org.springframework spring-instrument${org.springframework.version} org.springframework spring-messaging${org.springframework.version} org.springframework spring-jdbc${org.springframework.version} org.springframework spring-orm${org.springframework.version} org.springframework spring-oxm${org.springframework.version} org.springframework spring-jms${org.springframework.version} org.springframework spring-tx${org.springframework.version} org.springframework spring-websocket${org.springframework.version} org.springframework spring-web${org.springframework.version} org.springframework spring-webmvc-portlet${org.springframework.version} org.springframework spring-webmvc${org.springframework.version} org.springframework spring-test${org.springframework.version} tk.mybatis mapper3.5.2 com.github.pagehelper pagehelper3.7.5 org.mybatis mybatis3.4.5 mysql mysql-connector-java5.1.47 org.mybatis mybatis-spring1.3.2 com.alibaba druid1.1.10
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm_db1
jdbc.username=root
jdbc.password=1234
2、编写dao和service 2.1、编写dao接口CREATE TABLE USER(
uid VARCHAr(32) PRIMARY KEY,
username VARCHAr(50),
PASSWORD VARCHAr(32)
)
2.2、编写service接口public interface UserMapper extends Mapper {
}
2.3、Service实现类public interface UserService {
public User findByPrimaryKey(String uid);
public void insertUser(User user);
}
3、配置类 3.1、spring配置类@Service
@Transactional
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userMapper;
@Override
public User findByPrimaryKey(String uid) {
return userMapper.selectByPrimaryKey(uid);
}
@Override
public void insertUser(User user) {
userMapper.insert(user);
}
}
- 配置注解
1.1 扫描注解包
1.2加载properties文件
1.3 开启注解事务支持 - 获得properties数据(实现类、@Value)
- 配置数据源DataSource
- 配置事务管理器(DataSourceTransactionManager)
3.2、@Configuration
@ComponentScan(basePackages = {“com.czxy”})
@EnableTransactionManagement
@PropertySource(value = “classpath:db.properties”)
public class SpringConfig {
// 4.2.4版本 固定配置
@Bean
public static PropertySourcesPlaceholderConfigurer create(){
return new PropertySourcesPlaceholderConfigurer();
}
//读取数据库相关配置
@Value(" j d b c . d r i v e r " ) p r i v a t e S t r i n g d r i v e r C l a s s ; @ V a l u e ( " {jdbc.driver}") private String driverClass; @Value(" jdbc.driver")privateStringdriverClass;@Value("{jdbc.url}")
private String url;
@Value(" j d b c . u s e r n a m e " ) p r i v a t e S t r i n g u s e r n a m e ; @ V a l u e ( " {jdbc.username}") private String username; @Value(" jdbc.username")privateStringusername;@Value("{jdbc.password}")
private String password;
//数据源使用德鲁伊连接池
@Bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driverClass);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
return ds;
}
// 开启事务管理器
@Bean
@Resource
public DataSourceTransactionManager txManager(DataSource dataSource){
return new DataSourceTransactionManager(dataSource);
}
}
- 配置session工厂,spring和MyBatis整合时,通过SqlSessionFactoryBean获得SqlSessionFactory
SqlSessionFactoryBean只能加载mapper映射文件
注解开发需要加载Mapper类,故需要对mapper进行扫描 - 配置映射扫描器
4、测试类 4.1、方式1:整合Junit@Configuration
public class MyBatisConfig {
@Bean
public MapperScannerConfigurer mapperScanner() {
MapperScannerConfigurer configurer = new MapperScannerConfigurer();
configurer.setbasePackage(“com.czxy.dao”);
return configurer;
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfig.class,MyBatisConfig.class})
public class TestA {
@Resource
private UserService userService;
@Test
public void test01(){
User user = new User(“u001”,“张三丰”,“123”);
userService.insertUser(user);
System.out.println(“添加完毕”);
}
}
测试结果: 成功添加用户信息
public class TestB {
public static void main(String[] args) {
//1.创建工厂,设置两个配置类
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class,MyBatisConfig.class);
//2.从工厂获取需要的对象
UserService userService = applicationContext.getBean(UserService.class);
//3.执行语句
User user = new User(“u800”,“zhangsan”,“123”);
userService.insertUser(user);
System.out.println(“添加完毕”);
}
}



