Spring集成MyBatis(基于java配置方式)

目录

这是在Spring+SpringMVC基础上的,如果不懂得可以看最简单的搭建Spring MVC框架步骤

一、安装mybatis(导包)

二、装配SqlSessionFactory

三、编写数据映射器类

四、装配数据映射类

五、直接注入使用数据映射类


 

这是在Spring+SpringMVC基础上的,如果不懂得可以看最简单的搭建Spring MVC框架步骤

一、安装mybatis(导包)

一个mybatis包,另一个是spring与mybatis适配包

<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>
		
		<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>

 

二、装配SqlSessionFactory

重点:SqlSessionFactoryBean

package com.yan.otl.config;

import org.apache.commons.dbcp2.BasicDataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import com.yan.otl.main.dao.UserMapper;

@Configuration
@ComponentScan("com.yan.otl")
@PropertySource("classpath:/com/yan/otl/config/jdbc.properties")
@EnableTransactionManagement
public class RootConfig {
	@Autowired
	Environment env;
	
	@Value("${jdbc.driverClassName}")
	private String driverClassName;
	
	@Value("${jdbc.url}")
	private String url;
	
	@Value("${jdbc.username}")
	private String username;
	
	@Value("${jdbc.password}")
    private String password;
	
	/**
	 * 数据源
	 * @return
	 */
	@Bean
	public BasicDataSource dataSource() {
		BasicDataSource ds = new BasicDataSource();
		ds.setDriverClassName(driverClassName);
		ds.setUrl(url);
		ds.setUsername(username);
		ds.setPassword(password);
		
		System.out.println(env.getProperty("jdbc.username"));
		System.out.println(password);
		
		ds.setInitialSize(5);
		ds.setMaxIdle(10);
		ds.setMinIdle(5);
		ds.setMaxTotal(15);
		return ds;
	}
	
	@Bean
	DataSourceTransactionManager DataSourceTransactionManager(BasicDataSource dataSource) {
		DataSourceTransactionManager dstm = new DataSourceTransactionManager();
		dstm.setDataSource(dataSource);
		
		return dstm;
	}
	
	@Bean
	JdbcTemplate jdbcTemplate (BasicDataSource dataSource) {
		JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
		
		return jdbcTemplate;
	}
	
	/**
	 * SqlSessionFactoryBean配置
	 * @param dataSource
	 * @return
	 */
	@Bean
	SqlSessionFactoryBean sqlSessionFactoryBean(BasicDataSource dataSource) {

		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
		
		sqlSessionFactoryBean.setDataSource(dataSource);
		
		org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration() ;
		
		sqlSessionFactoryBean.setConfiguration(configuration);
		
		return sqlSessionFactoryBean;
	}
	
	@Bean
	MapperFactoryBean<UserMapper> mapperFactoryBean(SqlSessionFactoryBean sqlSessionFactoryBean) throws Exception {
		MapperFactoryBean<UserMapper> mapperFactoryBean = new MapperFactoryBean<UserMapper>();
		
		mapperFactoryBean.setSqlSessionFactory(sqlSessionFactoryBean.getObject());
		mapperFactoryBean.setMapperInterface(UserMapper.class);
		
		return mapperFactoryBean;
	}
}

 

三、编写数据映射器类

package com.yan.otl.main.dao;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import com.yan.otl.main.data.User;

@Repository
public interface UserMapper {
	@Select("SELECT * FROM t_userinfo WHERE id = #{userId}")
	User getUser(@Param("userId") Integer userId);
}

 

四、装配数据映射类

如步骤二中的: MapperFactoryBean<UserMapper>

 

五、直接注入使用数据映射类

像一般的SpringBean一样使用

    @Autowired
    UserMapper userMapper;

package com.yan.otl.main.controller;

import java.util.Random;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import com.yan.otl.main.dao.LoginDao;
import com.yan.otl.main.dao.UserMapper;
import com.yan.otl.main.data.User;

@RestController
public class LoginController {
	
	@Autowired
	LoginDao loginDao;
	
	@Autowired
	UserMapper userMapper;
	
	@RequestMapping("/login")
	public ModelAndView login(ModelAndView mav) {
		User user = new User();
		user.setName("李四");
		user.setNumber(new Random(10).nextInt());
		loginDao.add(user);
		
		mav.setViewName("login");
		return mav;
	}
	
	@RequestMapping("/getUser")
	public User getUser() {
		
		User user = userMapper.getUser(1);
		System.out.println(user);
		
		return user;
	}
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值