Spring Boot + BeetlSQL + H2数据库项目整合
这个项目是一个大佬给的,目的是看我的自学能力和基础知识的牢固程度,要求如下:
- 底层架构采用springboot
- 前端技术使用layui
- 后台数据库使用H2
- 数据库中间件使用BeetlSQL
要求做一个登陆界面,实现登陆验证功能
具体实现如下:
-
首先建立SpringBoot项目,这个网上有好多,不会的可以自己看,基本都会,就不做详细描述
-
添加BeetlSQL和H2的依赖。
<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>
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency>
-
然后按一般步骤,建立webapp,建bean包,建controller包,建service包,建dao包和util包,之后目录结构如下:
-
把需要的其他文件,如layui,css,jquery等加到resources的static中。
-
写一个登陆界面
-
建User.java类
-
建UserController.java类
-
写service层文件
-
写dao层文件
先这样做好之后,再进行其他的配置
- 配置yml文件
# 服务器的配置
server:
port: 8080
servlet:
context-path: /demo
# SpringMVC
spring:
mvc:
static-path-pattern: /**
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
datasource:
url: jdbc:h2:~/test
driver-class-name: org.h2.Driver
username: sa
password: sa
jpa:
database: h2
hibernate:
ddl-auto: update
show-sql: true
h2:
console:
path: /h2-console
enabled: true
beetlsql:
daoSuffix: Dao
basePackage: com.example.demo.dao
2. 此时应该注意,service层和dao层连接起来不能用@Autowired,不然就是错误的,就算能项目能跑起来,在controller层获取到的数据是空的,直接会有空指针异常。至于为什么会有这个错误,待会详细说明
- 查看Beetl官网文档,有说明要写一个Main.java类
- 但是写了之后还是有问题,这里就需要用到bean注解了,我刚开始也是不了解,还是大佬给我帮忙改的,这里要谢谢他了,先给一个网址吧,可以看一看SpringBoot基础篇Bean之基本定义与使用
- 然后把这个Main.java改成这样
@Configuration
public class Main {
ConnectionSource source = ConnectionSourceHelper.getSimple("org.h2.Driver", "jdbc:h2:~/test", "sa", "sa");
DBStyle mysql = new MySqlStyle();
// sql语句放在classpagth的/sql 目录下
SQLLoader loader = new ClasspathLoader("/sql");
// 数据库命名跟java命名一样,所以采用DefaultNameConversion,还有一个是UnderlinedNameConversion,下划线风格的,
UnderlinedNameConversion nc = new UnderlinedNameConversion();
// 最后,创建一个SQLManager,DebugInterceptor 不是必须的,但可以通过它查看sql执行情况
@Bean
public SQLManager sqlManager()
{
SQLManager sqlManager = new SQLManager(mysql,loader,source,nc,new Interceptor[]{new DebugInterceptor()});
return sqlManager;
}
}
- 把UserServiceImpl.java改成这样
@Service("userService")
public class UserServiceImpl implements IUserService{
@Autowired
SQLManager sqlManager;
/**
* 单条查询
* @param user
* @return
*/
@Override
public User userLogin(User user) {
UserDao dao = sqlManager.getMapper(UserDao.class);
return dao.userLogin(user);
}
}
- 改UserDao.java,这里加 @SqlResource(“user”) 的注解是为了用自己写的sql语句,具体用法可以参照BeetlSQL官网Mapper配置,而我们的sql语句需要写在resources目录下的sql目录里,并且格式是md格式的
@SqlResource("user")
public interface UserDao extends BaseMapper<User> {
User userLogin(User user);
}
- 经过这样的一系列配置之后,基本就可以跑起来了
反思总结
遇到新技术的时候,我们要去官网查看了解,一般官网都会有相应的文档教你如何使用和一些介绍。而不是去博客上搜这个东西怎么用,面向百度编程可不是好习惯。
通过这次我也知道了BeetlSQL的优点:
- BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。
- 无需注解,自动使用大量内置SQL,轻易完成增删改查功能,节省50%的开发工作量。 数据模型支持Pojo,也支持Map/List这种快速模型,也支持混合模型。 SQL 模板基于Beetl实现,更容易写和调试,以及扩展。 可以针对单个表(或者视图)代码生成pojo类和sql模版,甚至是整个数据库。能减少代码编写工作量。
- SQL 以更简洁的方式,Markdown方式集中管理,同时方便程序开发和数据库SQL调试。可以自动将sql文件映射为dao接口类。灵活直观的支持支持一对一,一对多,多对多关系映射而不引入复杂的OR Mapping概念和技术。具备Interceptor功能,可以调试,性能诊断SQL,以及扩展其他功能
- 内置支持主从数据库支持的开源工具,支持跨数据库平台,开发者所需工作减少到最小,目前跨数据库支持MySql、Postgres、Oracle、SQLServer、h2、SQLite、DB2。
注解和反射是一个难点,对于小白来说,想弄懂确实很困难,边开发边理解,不断积累经验,不断加深对技术的理解和掌握
感觉不久BeetlSQL就会蔓延开来,超越Mybatis和Hibernate,毕竟优胜劣汰嘛,所以在计算机的道路上还是要不断的学习,技术日新月异的变化,要跟上时代的步伐,才能不被时代所淘汰!
更多推荐
Spring Boot + BeetlSQL + H2数据库项目整合
发布评论