Spring Boot + BeetlSQL + H2数据库项目整合

Spring Boot + BeetlSQL + H2数据库项目整合

这个项目是一个大佬给的,目的是看我的自学能力和基础知识的牢固程度,要求如下:

  1. 底层架构采用springboot
  2. 前端技术使用layui
  3. 后台数据库使用H2
  4. 数据库中间件使用BeetlSQL

要求做一个登陆界面,实现登陆验证功能

具体实现如下:

  1. 首先建立SpringBoot项目,这个网上有好多,不会的可以自己看,基本都会,就不做详细描述

  2. 添加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>
    
  3. 然后按一般步骤,建立webapp,建bean包,建controller包,建service包,建dao包和util包,之后目录结构如下:在这里插入图片描述

  4. 把需要的其他文件,如layui,css,jquery等加到resources的static中。

  5. 写一个登陆界面

  6. 建User.java类

  7. 建UserController.java类

  8. 写service层文件

  9. 写dao层文件

先这样做好之后,再进行其他的配置

  1. 配置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层获取到的数据是空的,直接会有空指针异常。至于为什么会有这个错误,待会详细说明

  1. 查看Beetl官网文档,有说明要写一个Main.java类
    在这里插入图片描述
  2. 但是写了之后还是有问题,这里就需要用到bean注解了,我刚开始也是不了解,还是大佬给我帮忙改的,这里要谢谢他了,先给一个网址吧,可以看一看SpringBoot基础篇Bean之基本定义与使用
  3. 然后把这个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;
    }

}
  1. 把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);
    }
}
  1. 改UserDao.java,这里加 @SqlResource(“user”) 的注解是为了用自己写的sql语句,具体用法可以参照BeetlSQL官网Mapper配置而我们的sql语句需要写在resources目录下的sql目录里,并且格式是md格式的
@SqlResource("user")
public interface UserDao extends BaseMapper<User> {
    User userLogin(User user);
}

在这里插入图片描述

  1. 经过这样的一系列配置之后,基本就可以跑起来了

反思总结

遇到新技术的时候,我们要去官网查看了解,一般官网都会有相应的文档教你如何使用和一些介绍。而不是去博客上搜这个东西怎么用,面向百度编程可不是好习惯。
通过这次我也知道了BeetlSQL的优点:

  1. BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。
  2. 无需注解,自动使用大量内置SQL,轻易完成增删改查功能,节省50%的开发工作量。 数据模型支持Pojo,也支持Map/List这种快速模型,也支持混合模型。 SQL 模板基于Beetl实现,更容易写和调试,以及扩展。 可以针对单个表(或者视图)代码生成pojo类和sql模版,甚至是整个数据库。能减少代码编写工作量。
  3. SQL 以更简洁的方式,Markdown方式集中管理,同时方便程序开发和数据库SQL调试。可以自动将sql文件映射为dao接口类。灵活直观的支持支持一对一,一对多,多对多关系映射而不引入复杂的OR Mapping概念和技术。具备Interceptor功能,可以调试,性能诊断SQL,以及扩展其他功能
  4. 内置支持主从数据库支持的开源工具,支持跨数据库平台,开发者所需工作减少到最小,目前跨数据库支持MySql、Postgres、Oracle、SQLServer、h2、SQLite、DB2。
注解和反射是一个难点,对于小白来说,想弄懂确实很困难,边开发边理解,不断积累经验,不断加深对技术的理解和掌握
感觉不久BeetlSQL就会蔓延开来,超越Mybatis和Hibernate,毕竟优胜劣汰嘛,所以在计算机的道路上还是要不断的学习,技术日新月异的变化,要跟上时代的步伐,才能不被时代所淘汰!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值