# spring-boot-demo-orm-beetlsql > 此 demo 主要演示了 Spring Boot 如何整合 beetl sql 快捷操作数据库,使用的是beetl官方提供的beetl-framework-starter集成。集成过程不是十分顺利,没有其他的orm框架集成的便捷。 ## pom.xml ```xml 4.0.0 spring-boot-demo-orm-beetlsql 1.0.0-SNAPSHOT jar spring-boot-demo-orm-beetlsql Demo project for Spring Boot com.xkcoding spring-boot-demo 1.0.0-SNAPSHOT UTF-8 UTF-8 1.8 1.1.68.RELEASE org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-jdbc com.ibeetl beetl-framework-starter ${ibeetl.version} org.springframework.boot spring-boot-starter-test test mysql mysql-connector-java cn.hutool hutool-all com.google.guava guava org.projectlombok lombok true spring-boot-demo-orm-beetlsql org.springframework.boot spring-boot-maven-plugin ``` ## application.yml > 注意下方注释的地方,**不能解开注释,并且需要通过JavaConfig的方式手动配置数据源**,否则,会导致beetl启动失败,因此,初始化数据库的数据,只能手动在数据库使用 resources/db 下的建表语句和数据库初始化数据。 ```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 #### beetlsql starter不能开启下面选项 # 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.beetlsql: trace beetl: enabled: false beetlsql: enabled: true sqlPath: /sql daoSuffix: Dao basePackage: com.xkcoding.orm.beetlsql.dao dbStyle: org.beetl.sql.core.db.MySqlStyle nameConversion: org.beetl.sql.core.UnderlinedNameConversion beet-beetlsql: dev: true ``` ## BeetlConfig.java ```java /** *

* Beetl数据源配置 *

* * @author yangkai.shen * @date Created in 2018-11-14 17:15 */ @Configuration public class BeetlConfig { /** * Beetl需要显示的配置数据源,方可启动项目,大坑,切记! */ @Bean(name = "datasource") public DataSource getDataSource(Environment env){ HikariDataSource dataSource = new HikariDataSource(); dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name")); dataSource.setJdbcUrl(env.getProperty("spring.datasource.url")); dataSource.setUsername(env.getProperty("spring.datasource.username")); dataSource.setPassword(env.getProperty("spring.datasource.password")); return dataSource; } } ``` ## UserDao.java ```java /** *

* UserDao *

* * @author yangkai.shen * @date Created in 2018-11-14 16:18 */ @Component public interface UserDao extends BaseMapper { } ``` ## UserServiceImpl.java ```java /** *

* User Service *

* * @author yangkai.shen * @date Created in 2018-11-14 16:28 */ @Service @Slf4j public class UserServiceImpl implements UserService { private final UserDao userDao; @Autowired public UserServiceImpl(UserDao userDao) { this.userDao = userDao; } /** * 新增用户 * * @param user 用户 */ @Override public User saveUser(User user) { userDao.insert(user, true); return user; } /** * 批量插入用户 * * @param users 用户列表 */ @Override public void saveUserList(List users) { userDao.insertBatch(users); } /** * 根据主键删除用户 * * @param id 主键 */ @Override public void deleteUser(Long id) { userDao.deleteById(id); } /** * 更新用户 * * @param user 用户 * @return 更新后的用户 */ @Override public User updateUser(User user) { if (ObjectUtil.isNull(user)) { throw new RuntimeException("用户id不能为null"); } userDao.updateTemplateById(user); return userDao.single(user.getId()); } /** * 查询单个用户 * * @param id 主键id * @return 用户信息 */ @Override public User getUser(Long id) { return userDao.single(id); } /** * 查询用户列表 * * @return 用户列表 */ @Override public List getUserList() { return userDao.all(); } /** * 分页查询 * * @param currentPage 当前页 * @param pageSize 每页条数 * @return 分页用户列表 */ @Override public PageQuery getUserByPage(Integer currentPage, Integer pageSize) { return userDao.createLambdaQuery().page(currentPage, pageSize); } } ``` ## UserServiceTest.java ```java /** *

* User Service测试 *

* * @author yangkai.shen * @date Created in 2018-11-14 16:30 */ @Slf4j public class UserServiceTest extends SpringBootDemoOrmBeetlsqlApplicationTests { @Autowired private UserService userService; @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(); user = userService.saveUser(user); Assert.assertTrue(ObjectUtil.isNotNull(user.getId())); log.debug("【user】= {}", user); } @Test public void saveUserList() { List users = Lists.newArrayList(); for (int i = 5; i < 15; i++) { String salt = IdUtil.fastSimpleUUID(); User user = User.builder().name("testSave" + i).password(SecureUtil.md5("123456" + salt)).salt(salt).email("testSave" + i + "@xkcoding.com").phoneNumber("1730000000" + i).status(1).lastLoginTime(new DateTime()).createTime(new DateTime()).lastUpdateTime(new DateTime()).build(); users.add(user); } userService.saveUserList(users); Assert.assertTrue(userService.getUserList().size() > 2); } @Test public void deleteUser() { userService.deleteUser(1L); User user = userService.getUser(1L); Assert.assertTrue(ObjectUtil.isNull(user)); } @Test public void updateUser() { User user = userService.getUser(2L); user.setName("beetlSql 修改后的名字"); User update = userService.updateUser(user); Assert.assertEquals("beetlSql 修改后的名字", update.getName()); log.debug("【update】= {}", update); } @Test public void getUser() { User user = userService.getUser(1L); Assert.assertNotNull(user); log.debug("【user】= {}", user); } @Test public void getUserList() { List userList = userService.getUserList(); Assert.assertTrue(CollUtil.isNotEmpty(userList)); log.debug("【userList】= {}", userList); } @Test public void getUserByPage() { List userList = userService.getUserList(); PageQuery userByPage = userService.getUserByPage(1, 5); Assert.assertEquals(5, userByPage.getList().size()); Assert.assertEquals(userList.size(), userByPage.getTotalRow()); log.debug("【userByPage】= {}", JSONUtil.toJsonStr(userByPage)); } } ``` ## 参考 - BeetlSQL官方文档:http://ibeetl.com/guide/#beetlsql - 开源项目:https://gitee.com/yangkb/springboot-beetl-beetlsql - 博客:https://blog.csdn.net/flystarfly/article/details/82752597