springBoot整合BeetlSQL
文章摘要:本文主要介紹springBoot整合BeetlSQL,以及BeetlSQL自定義sql使用。
注:本例中,數據庫將使用mysql,數據源使用阿里數據源,數據庫持久化采用BeetlSQL,由於個人原因暫時未加事務處理。
源碼地址:https://github.com/zlk19921105/springbootexercise
整合步驟如下:
1.1 pom.xml文件中添加MySQL依賴,完整pom附於文章最后
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--beetlsql-->由於本次采用BeetlSQL操作數據庫,故配置一下兩項
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl-framework-starter</artifactId>
<version>1.1.35.RELEASE</version>
</dependency>
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetlsql</artifactId>
<version>2.10.10</version>
</dependency>
<!-- alibaba的druid數據庫連接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
1.2 application.yml配置
#程序端口 server: context-path: /springBoot port: 8089 #數據源配置 spring: datasource: name: blog url: jdbc:mysql://127.0.0.1:3306/blog?useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: 123456 # password: cY+qV/UGnuFJ/qBQDppj++1hxX1buy+NlXWww== # 使用druid數據源 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver #filters: stat,config filters: stat maxActive: 20 initialSize: 1 maxWait: 60000 minIdle: 1 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxOpenPreparedStatements: 20 #hibernate配置這項 #spring: #jpa: #properties: #hibernate: #hbm2ddl: #auto:update//更新數據表 #auto=create//啟動項目刪除原有表新建表 #mybatis配置以下兩項 # mapper-locations: #classpath:com.zlk.dao/*.xml //數據庫操作層,xml # type-aliases-package: com.zlk.model //數據庫實體層
1.3 數據庫
數據庫名稱:blog, 創建表:CREATE TABLE `b_user` ( `USER_ID` int(11) NOT NULL AUTO_INCREMENT, `USER_NAME` varchar(225) NOT NULL, `PASSWORD` varchar(100) NOT NULL, `LEVEL` varchar(100) DEFAULT NULL, `PHONE` varchar(20) DEFAULT NULL, `EMAIL` varchar(50) DEFAULT NULL, `PROFESSIONAL` varchar(150) DEFAULT NULL, `MAJOR` varchar(225) DEFAULT NULL, `SCHOOL` varchar(225) DEFAULT NULL, `CREATE_TIME` varchar(19) DEFAULT NULL, PRIMARY KEY (`USER_ID`), UNIQUE KEY `USER_NAME` (`USER_NAME`) ) ENGINE=InnoDB AUTO_INCREMENT=1003 DEFAULT CHARSET=utf8;
1.4 java部分
項目結構圖
1)model層
/**用戶實體類,類名稱與字段名稱要與數據庫表名一致。也可以自定義xml取別名使用 * @author zhoulk * Date: 2018/4/4. */ @Getter @Setter @ToString public class BUser implements Serializable { /**用戶編號*/ private Long userId; /**用戶名*/ private String userName; /**密碼*/ private String password; /**聯系電話*/ private String phone; }
2)dao層
/** * desc:用戶dao接口,繼承BaseMapper接口 * * @author zhoulk * Date: 2018/7/18. */ public interface UserDao extends BaseMapper<BUser> { //自定義方法,需要配置sql,見5)自定義sql public List<BUser> allUser(); }
3)service層
/** * desc: * * @author zhoulk * Date: 2018/7/18. */ @Service("userService") public class UserService { @Autowired private UserDao userDao; public List<BUser> userList() { return userDao.all(); } public List<BUser> allUser() { return userDao.allUser(); } }
4)測試類
/** * desc:用戶業務類測試 * * @author zhoulk * Date: 2018/7/18. */ @RunWith(SpringRunner.class) @SpringBootTest public class UserServiceTest { @Autowired private UserService userService; @Test public void userListTest(){ List<BUser> userList = userService.userList(); Assert.notNull(userList,"null"); } @Test public void allUserTest(){ List<BUser> userList = userService.allUser(); Assert.notNull(userList,"null"); } }
5)自定義sql,bUser.sql文件
復雜SQL寫在此處,sql文件命名規則與sql語法參考http://ibeetl.com/guide/beetlsql.html
allUser === select `user_name` from `b_user` /*where `config_flag`=#configFlag#*/
注:自定義sql文件時,需要加在sql文件,如下@ImportResource(locations = "classpath:/.sql")
@SpringBootApplication @ImportResource(locations = "classpath*:/*.sql") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
1.5 總結
BeetSql是一個全功能DAO工具, 同時具有Hibernate 優點 & Mybatis優點功能,適用於承認以SQL為中心,同時又需求工具能自動能生成大量常用的SQL的應用。
附:完整pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>demo</name> <description>Demo project for Spring Boot Exercise</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.10.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--beetlsql--> <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl-framework-starter</artifactId> <version>1.1.35.RELEASE</version> </dependency> <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>2.10.10</version> </dependency> <!-- alibaba的druid數據庫連接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.0</version> </dependency> <!--junit測試--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version> 4.12</version> </dependency> <!--熱部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.6</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>