# spring-boot-demo-orm-mybatis > 此 demo 演示了 Spring Boot 如何与原生的 mybatis 整合,使用了 mybatis 官方提供的脚手架 `mybatis-spring-boot-starter `可以很容易的和 Spring Boot 整合。 ## pom.xml ```xml 4.0.0 spring-boot-demo-orm-mybatis 1.0.0-SNAPSHOT jar spring-boot-demo-orm-mybatis Demo project for Spring Boot com.xkcoding spring-boot-demo 1.0.0-SNAPSHOT UTF-8 UTF-8 1.8 1.3.2 org.mybatis.spring.boot mybatis-spring-boot-starter ${mybatis.version} mysql mysql-connector-java org.projectlombok lombok true cn.hutool hutool-all com.google.guava guava org.springframework.boot spring-boot-starter-test test spring-boot-demo-orm-mybatis org.springframework.boot spring-boot-maven-plugin ``` ## SpringBootDemoOrmMybatisApplication.java ```java /** *

* 启动类 *

* * @author yangkai.shen * @date Created in 2018-11-08 10:52 */ @MapperScan(basePackages = {"com.xkcoding.orm.mybatis.mapper"}) @SpringBootApplication public class SpringBootDemoOrmMybatisApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDemoOrmMybatisApplication.class, args); } } ``` ## application.yml ```yaml spring: datasource: url: jdbc:mysql://127.0.0.1:3306/spring-boot-demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT%2B8 username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver type: com.zaxxer.hikari.HikariDataSource initialization-mode: always continue-on-error: true schema: - "classpath:db/schema.sql" data: - "classpath:db/data.sql" hikari: minimum-idle: 5 connection-test-query: SELECT 1 FROM DUAL maximum-pool-size: 20 auto-commit: true idle-timeout: 30000 pool-name: SpringBootDemoHikariCP max-lifetime: 60000 connection-timeout: 30000 logging: level: com.xkcoding: debug com.xkcoding.orm.mybatis.mapper: trace mybatis: configuration: # 下划线转驼峰 map-underscore-to-camel-case: true mapper-locations: classpath:mappers/*.xml type-aliases-package: com.xkcoding.orm.mybatis.entity ``` ## UserMapper.java ```java /** *

* User Mapper *

* * @author yangkai.shen * @date Created in 2018-11-08 10:54 */ @Mapper @Component public interface UserMapper { /** * 查询所有用户 * * @return 用户列表 */ @Select("SELECT * FROM orm_user") List selectAllUser(); /** * 根据id查询用户 * * @param id 主键id * @return 当前id的用户,不存在则是 {@code null} */ @Select("SELECT * FROM orm_user WHERE id = #{id}") User selectUserById(@Param("id") Long id); /** * 保存用户 * * @param user 用户 * @return 成功 - {@code 1} 失败 - {@code 0} */ int saveUser(@Param("user") User user); /** * 删除用户 * * @param id 主键id * @return 成功 - {@code 1} 失败 - {@code 0} */ int deleteById(@Param("id") Long id); } ``` ## UserMapper.xml ```xml INSERT INTO `orm_user` (`name`, `password`, `salt`, `email`, `phone_number`, `status`, `create_time`, `last_login_time`, `last_update_time`) VALUES (#{user.name}, #{user.password}, #{user.salt}, #{user.email}, #{user.phoneNumber}, #{user.status}, #{user.createTime}, #{user.lastLoginTime}, #{user.lastUpdateTime}) DELETE FROM `orm_user` WHERE `id` = #{id} ``` ## UserMapperTest.java ```java /** *

* UserMapper 测试类 *

* * @author yangkai.shen * @date Created in 2018-11-08 11:25 */ @Slf4j public class UserMapperTest extends SpringBootDemoOrmMybatisApplicationTests { @Autowired private UserMapper userMapper; @Test public void selectAllUser() { List userList = userMapper.selectAllUser(); Assert.assertTrue(CollUtil.isNotEmpty(userList)); log.debug("【userList】= {}", userList); } @Test public void selectUserById() { User user = userMapper.selectUserById(1L); Assert.assertNotNull(user); log.debug("【user】= {}", user); } @Test public void saveUser() { String salt = IdUtil.fastSimpleUUID(); User user = User.builder().name("testSave3").password(SecureUtil.md5("123456" + salt)).salt(salt).email("testSave3@xkcoding.com").phoneNumber("17300000003").status(1).lastLoginTime(new DateTime()).createTime(new DateTime()).lastUpdateTime(new DateTime()).build(); int i = userMapper.saveUser(user); Assert.assertEquals(1, i); } @Test public void deleteById() { int i = userMapper.deleteById(1L); Assert.assertEquals(1, i); } } ``` ## 参考 - Mybatis官方文档:http://www.mybatis.org/mybatis-3/zh/index.html - Mybatis官方脚手架文档:http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/ - Mybatis整合Spring Boot官方demo:https://github.com/mybatis/spring-boot-starter/tree/master/mybatis-spring-boot-samples