目录
这是在Spring+SpringMVC基础上的,如果不懂得可以看最简单的搭建Spring MVC框架步骤
这是在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;
}
}