在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("张三")); } }
在网页中显示了张三的信息,则表明集成成功了