springBoot整合BeetlSQL
文章摘要:本文主要介绍springBoot整合BeetlSQL,以及BeetlSQL自定义sql使用。
注:本例中,数据库将使用mysql,数据源使用阿里数据源,数据库持久化采用BeetlSQL,由于个人原因暂时未加事务处理。
源码地址:https://github.com/zlk19921105/spring_boot_exercise
整合步骤如下:
1.1 pom.xml文件中添加MySQL依赖,完整pom附于文章最后
1<dependency> 2 <groupId>mysql</groupId> 3 <artifactId>mysql-connector-java</artifactId> 4</dependency> 5 6<!--beetlsql-->由于本次采用BeetlSQL操作数据库,故配置一下两项 7<dependency> 8 <groupId>com.ibeetl</groupId> 9 <artifactId>beetl-framework-starter</artifactId> 10 <version>1.1.35.RELEASE</version> 11</dependency> 12<dependency> 13 <groupId>com.ibeetl</groupId> 14 <artifactId>beetlsql</artifactId> 15 <version>2.10.10</version> 16</dependency> 17 18<!-- alibaba的druid数据库连接池 --> 19<dependency> 20 <groupId>com.alibaba</groupId> 21 <artifactId>druid-spring-boot-starter</artifactId> 22 <version>1.1.0</version> 23</dependency>
1.2 application.yml配置
1#程序端口 2server: 3 context-path: /springBoot 4 port: 8089 5 6#数据源配置 7spring: 8 datasource: 9 name: blog 10 url: jdbc:mysql://127.0.0.1:3306/blog?useUnicode=true&characterEncoding=utf8&useSSL=false 11 username: root 12 password: 123456 13 # password: cY+qV/UGnuFJ/qBQDppj++1hxX1buy+NlXWww== 14 # 使用druid数据源 15 type: com.alibaba.druid.pool.DruidDataSource 16 driver-class-name: com.mysql.jdbc.Driver 17 #filters: stat,config 18 filters: stat 19 maxActive: 20 20 initialSize: 1 21 maxWait: 60000 22 minIdle: 1 23 timeBetweenEvictionRunsMillis: 60000 24 minEvictableIdleTimeMillis: 300000 25 validationQuery: select 'x' 26 testWhileIdle: true 27 testOnBorrow: false 28 testOnReturn: false 29 poolPreparedStatements: true 30 maxOpenPreparedStatements: 20 31 32 33#hibernate配置这项 34#spring: 35 #jpa: 36 #properties: 37 #hibernate: 38 #hbm2ddl: 39 #auto:update//更新数据表 40 #auto=create//启动项目删除原有表新建表 41 42#mybatis配置以下两项 43# mapper-locations: 44 #classpath:com.zlk.dao/*.xml //数据库操作层,xml 45 46# type-aliases-package: com.zlk.model //数据库实体层
1.3 数据库
1数据库名称:blog, 2创建表:CREATE TABLE `b_user` ( 3 `USER_ID` int(11) NOT NULL AUTO_INCREMENT, 4 `USER_NAME` varchar(225) NOT NULL, 5 `PASSWORD` varchar(100) NOT NULL, 6 `LEVEL` varchar(100) DEFAULT NULL, 7 `PHONE` varchar(20) DEFAULT NULL, 8 `EMAIL` varchar(50) DEFAULT NULL, 9 `PROFESSIONAL` varchar(150) DEFAULT NULL, 10 `MAJOR` varchar(225) DEFAULT NULL, 11 `SCHOOL` varchar(225) DEFAULT NULL, 12 `CREATE_TIME` varchar(19) DEFAULT NULL, 13 PRIMARY KEY (`USER_ID`), 14 UNIQUE KEY `USER_NAME` (`USER_NAME`) 15 ) ENGINE=InnoDB AUTO_INCREMENT=1003 DEFAULT CHARSET=utf8;
1.4 java部分
项目结构图

1)model层
1/**用户实体类,类名称与字段名称要与数据库表名一致。也可以自定义xml取别名使用 2 * @author zhoulk 3 * Date: 2018/4/4. 4 */ 5@Getter @Setter @ToString 6public class BUser implements Serializable { 7 /**用户编号*/ 8 private Long userId; 9 /**用户名*/ 10 private String userName; 11 /**密码*/ 12 private String password; 13 /**联系电话*/ 14 private String phone; 15}
2)dao层
1/** 2 * desc:用户dao接口,继承BaseMapper接口 3 * 4 * @author zhoulk 5 * Date: 2018/7/18. 6 */ 7public interface UserDao extends BaseMapper<BUser> { 8 //自定义方法,需要配置sql,见5)自定义sql 9 public List<BUser> allUser(); 10}
3)service层
1/** 2 * desc: 3 * 4 * @author zhoulk 5 * Date: 2018/7/18. 6 */ 7@Service("userService") 8public class UserService { 9 10 @Autowired 11 private UserDao userDao; 12 13 public List<BUser> userList() { 14 return userDao.all(); 15 } 16 17 public List<BUser> allUser() { 18 return userDao.allUser(); 19 } 20 21}
4)测试类
1/** 2 * desc:用户业务类测试 3 * 4 * @author zhoulk 5 * Date: 2018/7/18. 6 */ 7@RunWith(SpringRunner.class) 8@SpringBootTest 9public class UserServiceTest { 10 11 @Autowired 12 private UserService userService; 13 14 @Test 15 public void userListTest(){ 16 List<BUser> userList = userService.userList(); 17 Assert.notNull(userList,"null"); 18 } 19 20 @Test 21 public void allUserTest(){ 22 List<BUser> userList = userService.allUser(); 23 Assert.notNull(userList,"null"); 24 } 25 26}
5)自定义sql,bUser.sql文件
复杂SQL写在此处,sql文件命名规则与sql语法参考http://ibeetl.com/guide/beetlsql.html
1allUser 2=== 3select `user_name` from `b_user` /*where `config_flag`=#configFlag#*/
注:自定义sql文件时,需要加在sql文件,如下@ImportResource(locations = "classpath_:/_.sql")
1@SpringBootApplication 2@ImportResource(locations = "classpath*:/*.sql") 3public class DemoApplication { 4 5 public static void main(String[] args) { 6 SpringApplication.run(DemoApplication.class, args); 7 } 8}
1.5 总结
BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。
附:完整pom
1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <groupId>com</groupId> 7 <artifactId>demo</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 <packaging>jar</packaging> 10 11 <name>demo</name> 12 <description>Demo project for Spring Boot Exercise</description> 13 14 <parent> 15 <groupId>org.springframework.boot</groupId> 16 <artifactId>spring-boot-starter-parent</artifactId> 17 <version>1.5.10.RELEASE</version> 18 <relativePath/> <!-- lookup parent from repository --> 19 </parent> 20 21 <properties> 22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 24 <java.version>1.8</java.version> 25 </properties> 26 27 <dependencies> 28 <dependency> 29 <groupId>org.springframework.boot</groupId> 30 <artifactId>spring-boot-starter-data-jpa</artifactId> 31 </dependency> 32 <dependency> 33 <groupId>org.springframework.boot</groupId> 34 <artifactId>spring-boot-starter-web</artifactId> 35 </dependency> 36 37 <dependency> 38 <groupId>org.springframework.boot</groupId> 39 <artifactId>spring-boot-starter-test</artifactId> 40 <scope>test</scope> 41 </dependency> 42 43 <dependency> 44 <groupId>mysql</groupId> 45 <artifactId>mysql-connector-java</artifactId> 46 </dependency> 47 48 49 <!--beetlsql--> 50 <dependency> 51 <groupId>com.ibeetl</groupId> 52 <artifactId>beetl-framework-starter</artifactId> 53 <version>1.1.35.RELEASE</version> 54 </dependency> 55 <dependency> 56 <groupId>com.ibeetl</groupId> 57 <artifactId>beetlsql</artifactId> 58 <version>2.10.10</version> 59 </dependency> 60 61 <!-- alibaba的druid数据库连接池 --> 62 <dependency> 63 <groupId>com.alibaba</groupId> 64 <artifactId>druid-spring-boot-starter</artifactId> 65 <version>1.1.0</version> 66 </dependency> 67 68 <!--junit测试--> 69 <dependency> 70 <groupId>org.springframework</groupId> 71 <artifactId>spring-test</artifactId> 72 </dependency> 73 <dependency> 74 <groupId>junit</groupId> 75 <artifactId>junit</artifactId> 76 <version> 4.12</version> 77 </dependency> 78 79 <!--热部署--> 80 <dependency> 81 <groupId>org.springframework.boot</groupId> 82 <artifactId>spring-boot-devtools</artifactId> 83 <optional>true</optional> 84 </dependency> 85 86 <dependency> 87 <groupId>org.projectlombok</groupId> 88 <artifactId>lombok</artifactId> 89 <version>1.16.6</version> 90 </dependency> 91 92 </dependencies> 93 94 <build> 95 <plugins> 96 <plugin> 97 <groupId>org.springframework.boot</groupId> 98 <artifactId>spring-boot-maven-plugin</artifactId> 99 </plugin> 100 </plugins> 101 </build> 102 103</project>