在Spring中集成mybatis折腾了几天时间,还是花点时间来记录整个过程吧。

添加依赖

在build.gradle文件中添加下列依赖


compile group: 'commons-dbcp', name: 'commons-dbcp', version: '1.4'
// https://mvnrepository.com/artifact/com.google.code.gson/gson
compile group: 'com.google.code.gson', name: 'gson', version: '1.7.2'
compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2")
// https://mvnrepository.com/artifact/mysql/mysql-connector-java
compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.11'

扫描mapper文件

在RootConfig文件中用@MapperScan指定mapper文件路径如


@Configuration
@ComponentScan(basePackages = {"springbootmybatis"})
@MapperScan("springbootmybatis/web/mapper")
public class RootConfig {
}

配置数据源


@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource(){
BasicDataSource ds=new BasicDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/spring_BookManager?useUnicode=true&characterEncoding=utf-8");
ds.setUsername("spring");
ds.setPassword("741258963");
return ds;
}

@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);//在sqlSessionFactoryBean中配置datasource
SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBean.getObject();//由 Spring 最终创建的 bean 不是 SqlSessionFactoryBean 本身, 而是工厂类的 getObject()返回的方法的结果。
return sqlSessionFactory;
}

}

在mapper接口中定义数据库操作


@Mapper
public interface UserMapper {
@Select("SELECT * FROM user where username=#{username}")
User listUser(@Param("username") String userName);
}

在service层封装操作


@Service
public class UserServiceImpl implements UserService {
private final UserMapper userMapper;
public UserServiceImpl(UserMapper userMapper) {
this.userMapper=userMapper;
}

@Override
public User listUser(String userName) {
return this.userMapper.listUser(userName);
}
}

在controller中简单测试


@RestController
public class UserController {
@Autowired
UserService userService;
@RequestMapping(value = "/user",produces = "application/json",method = GET)
@ResponseBody
public String listUser(){
Gson gson=new Gson();
return gson.toJson(userService.listUser("张三"));
}
}

在网页中显示了张三的信息,则表明集成成功了