数据库配置

这里使用H2数据库作为例子,作为快速开始,避免安装数据库服务器,你也可以使用任意beetlsql支持的数据库

引入H2数据库

  1. <dependency>
  2. <groupId>com.h2database</groupId>
  3. <artifactId>h2</artifactId>
  4. <version>1.4.200</version>
  5. </dependency>

引入JDBC

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-jdbc</artifactId>
  4. </dependency>

引入数据库连接池

BeetlSQL访问数据库不依赖数据库连接池,但有数据库连接池是大多数项目的标配。这里使用Druid

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>druid-spring-boot-starter</artifactId>
  4. <version>1.2.4</version>
  5. </dependency>

引入lombok(非必须)

  1. <dependency>
  2. <groupId>org.projectlombok</groupId>
  3. <artifactId>lombok</artifactId>
  4. <version>1.18.18</version>
  5. <scope>provided</scope>
  6. </dependency>

最后,需要准备一个sql脚本,以初始化H2数据库。保存如下sql到resources/db/schema.sql

  1. DROP TABLE IF EXISTS `sys_user`;
  2. CREATE TABLE `sys_user` (
  3. `id` int(11) NOT NULL AUTO_INCREMENT,
  4. `name` varchar(255) DEFAULT NULL,
  5. `department_id` int(11) DEFAULT NULL,
  6. `create_time` datetime DEFAULT NULL,
  7. PRIMARY KEY (`id`)
  8. ) ;
  9. BEGIN;
  10. INSERT INTO `sys_user` VALUES (1, 'lijz', 1, NULL);
  11. INSERT INTO `sys_user` VALUES (2, 'lucy', 1, NULL);
  12. INSERT INTO `sys_user` VALUES (3, 'bear', 2, NULL);
  13. INSERT INTO `sys_user` VALUES (4, 'mike', 1, NULL);
  14. INSERT INTO `sys_user` VALUES (5, 'lisan', 1, NULL);
  15. INSERT INTO `sys_user` VALUES (6, 'xb', 1, NULL);
  16. INSERT INTO `sys_user` VALUES (7, 'duanwu', 2, NULL);
  17. INSERT INTO `sys_user` VALUES (8, 'fenh', 1, NULL);
  18. INSERT INTO `sys_user` VALUES (9, 'lj', 2, NULL);
  19. INSERT INTO `sys_user` VALUES (10, 'gshen', 1, NULL);
  20. INSERT INTO `sys_user` VALUES (11, 'lihui', 1, NULL);
  21. COMMIT;

此脚本也适合mysql执行

配置H2,datasource, beetlsql

  1. spring:
  2. datasource:
  3. url: jdbc:h2:mem:dbtest;DB_CLOSE_ON_EXIT=FALSE
  4. username: sa
  5. password: sa
  6. driverClassName: org.h2.Driver
  7. h2:
  8. console:
  9. path: /h2
  10. enabled: true
  11. # 程序启动时初始化执行sql脚本
  12. spring.datasource.schema: classpath:db/h2.sql
  13. # beetlsql配置
  14. beetlsql:
  15. # sqlManager名称,多个sqlManager使用,隔开
  16. sqlManagers: sqlManager1
  17. sqlManager1:
  18. # 数据源名称
  19. ds: dataSource
  20. # mapper所在的包
  21. basePackage: com.example.demo.mapper
  22. # 将会扫描com.example.demo.mapper包下的以Mapper结尾的接口,为其自动生成代理类
  23. daoSuffix: Mapper
  24. # 是否是开发模式
  25. dev: true
  26. # sql文件编码
  27. sqlFileCharset: utf-8
  28. # 数据库style
  29. dbStyle: org.beetl.sql.core.db.H2Style

编写代码

新建一个POJO对象

  1. package com.example.demo.entity;
  2. import lombok.Data;
  3. import org.beetl.sql.annotation.entity.AutoID;
  4. import org.beetl.sql.annotation.entity.Table;
  5. @Data
  6. @Table(name = "sys_user")
  7. public class User {
  8. @AutoID
  9. private Integer id;
  10. private String name;
  11. private Integer departmentId;
  12. }

这里使用了lombok简化代码,如果没有引入lombok手动添加getter/setter方法即可

mapper包下创建UserMapper

  1. package com.example.demo.Mapper;
  2. import com.example.demo.entity.User;
  3. import org.beetl.sql.mapper.BaseMapper;
  4. public interface UserMapper extends BaseMapper<User> {
  5. }

在controller中使用

  1. @RestController
  2. @RequestMapping("user")
  3. public class TestController {
  4. @Autowired
  5. UserMapper userMapper;
  6. @RequestMapping("list")
  7. public String list() {
  8. List<User> list = userMapper.all();
  9. list.forEach(u -> {
  10. System.out.println(u);
  11. });
  12. return "ok";
  13. }
  14. }

查询成功,控制台日志如下:

  1. ┏━━━━━ Debug [user.$selectAll] ━━━
  2. SQL select * from sys_user
  3. 参数: []
  4. 位置: com.example.demo.controller.TestController.test(TestController.java:21)
  5. 时间: 1ms
  6. 结果: [11]
  7. ┗━━━━━ Debug [user.$selectAll] ━━━
  8. User(id=1, name=lijz, departmentId=1)
  9. User(id=2, name=lucy, departmentId=1)
  10. User(id=3, name=bear, departmentId=2)
  11. User(id=4, name=mike, departmentId=1)
  12. User(id=5, name=lisan, departmentId=1)
  13. User(id=6, name=xb, departmentId=1)
  14. User(id=7, name=duanwu, departmentId=2)
  15. User(id=8, name=fenh, departmentId=1)
  16. User(id=9, name=lj, departmentId=2)
  17. User(id=10, name=gshen, departmentId=1)
  18. User(id=11, name=lihui, departmentId=1)