BeetlSql简介及举例

4 篇文章 0 订阅

       本文参考BeetlSql官方网站,官网网站请点击这里~


       BeetSql是一个全功能DAO工具,同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。

       在开发效率上,无需注解,自动使用大量内置SQL,轻易完成增删改查功能。数据模型支持Pojo,也支持Map/List这种快速模型,也支持混合模型。SQL 模板基于Beetl实现,更容易写和调试,以及扩展。可以针对单个表(或者视图)代码生成pojo类和sql模版,甚至是整个数据库。能减少代码编写工作量。在维护性上,SQL 以更简洁的方式,Markdown方式集中管理,同时方便程序开发和数据库SQL调试。可以自动将sql文件映射为dao接口类。灵活直观的支持支持一对一,一对多,多对多关系映射而不引入复杂的OR Mapping概念和技术。具备Interceptor功能,可以调试,性能诊断SQL,以及扩展其他功能。下面是一个简单的例子~

一、首先配置maven

        <!-- https://mvnrepository.com/artifact/com.ibeetl/beetlsql -->
        <dependency>
            <groupId>com.ibeetl</groupId>
            <artifactId>beetlsql</artifactId>
            <version>2.12.12.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.ibeetl/beetl -->
        <dependency>
            <groupId>com.ibeetl</groupId>
            <artifactId>beetl</artifactId>
            <version>3.0.11.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.25</version>
        </dependency>

二、在数据库中建立相应的测试表,这里使用MySQL数据库

CREATE TABLE `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(64) DEFAULT NULL,
      `age` int(4) DEFAULT NULL,
      `create_date` datetime NULL DEFAULT NULL,
      PRIMARY KEY (`id`)
)

三、编写实体类,与数据库字段对应

四、写一个main方法进行测试

package com.xzw.main;

import com.xzw.vo.User;
import org.beetl.sql.core.*;
import org.beetl.sql.core.db.DBStyle;
import org.beetl.sql.core.db.MySqlStyle;
import org.beetl.sql.ext.DebugInterceptor;

import javax.management.Query;
import java.util.List;

/**
 * @author xzw
 */
public class UserMain {
    public static void main(String[] args) throws Exception{
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/xzw?useUnicode=true&characterEncoding=utf-8";
        String username = "root";
        String password = "root";

        ConnectionSource source = ConnectionSourceHelper.getSimple(driver, url, username, password);
        DBStyle mysql = new MySqlStyle();
        // sql语句放在classpath的/sql目录下
        SQLLoader loader = new ClasspathLoader("/sql");
        // 数据库命名跟java命名一样,所以采用DefaultNameConversion,还有一个是UnderlinedNameConversion,下划线风格的
        UnderlinedNameConversion nc = new UnderlinedNameConversion();
        // 最后,创建一个SQLManager, DebugInterceptor不是必须的,但可以通过它查看sql执行情况
        SQLManager sqlManager = new SQLManager(mysql, loader, source, nc, new Interceptor[]{new DebugInterceptor()});

        /*// 使用内置的生成的sql新增用户,如果需要获取主键,可以传入KeyHolder
        User user = new User();
        user.setAge(19);
        user.setName("lzq");
        sqlManager.insert(user);*/

        /*// 使用内置的SQL查询用户
        User user = new User();
        int id = 1;
        user = sqlManager.unique(User.class, id);
        System.out.println("user:" + user + "info:" + user.getName() + ":" + user.getAge());*/

        /*// 模板更新,仅仅根据id更新值不为null的列
        User newUser = new User();
        newUser.setId(1);
        newUser.setAge(20);
        sqlManager.updateTemplateById(newUser);*/

        /*// 模板查询
        User query = new User();
        query.setName("xzw");
        List<User> list = sqlManager.template(query);
        System.out.println(list);*/

        /*// 使用user.md 文件里的select语句
        User query2 = new User();
        query2.setName("xzw");
        List<User> list2 = sqlManager.select("user.select", User.class, query2);
        System.out.println(list2);*/
    }
}

       这里需要注意的是使用user.md文件里的SQL语句进行查询,这里的user.md文件需要放在resources文件下,这个测试例子中,需要首先在resources下新建sql目录,之后再在sql目录下新建user.md文件。

       关于如何写sql模板,如下是一些简单说明。

1、采用md格式,===上面是sql语句在本文件里的唯一标示,下面则是sql语句。
2、@ 和回车符号是定界符号,可以在里面写beetl语句。
3、"#" 是占位符号,生成sql语句得时候,将输出?,如果你想输出表达式值,需要用text函数,或者任何以db开头的函数,引擎则认为是直接输出文本。
4、isEmpty是beetl的一个函数,用来判断变量是否为空或者是否不存在.
5、文件名约定为类名,首字母小写。

       注意:sqlId 到sql文件的映射是通过类SQLIdNameConversion来完成的,默认提供了DefaultSQLIdNameConversion实现,即 以 "." 区分最后一部分是sql片段名字,前面转为为文件相对路径,如sqlId是user.select,则select是sql片段名字,user是文件名,beetlsql会在根目录下寻找user.sql或user.md ,也会找数据库方言目录下寻找,比如如果使用了mysql数据库,则优先寻找/mysql/user.md或/mysql/user.sql 然后在找/user.md或user.sql。如果sql是 test.user.select,则会在/test/user.md(sql) 或者 /mysql/test/user.md(sql) 下寻找“select”片段。

五、代码/SQL的生成

// genPojoCodeToConsole 方法可以根据数据库表生成相应的Pojo代码,输出到控制台
sqlManager.genPojoCodeToConsole("user");
// genSQLTemplateToConsole 方法可以根据数据库表生成相应的sql代码,输出到控制台
sqlManager.genSQLTemplateToConsole("user");

       调用上述两个方法会在控制台输出对应的实体类代码或者SQL代码。

SQL函数是用于在数据库中执行特定操作或计算的一种工具。以下是一些常见的SQL函数及其示例: 1. 聚合函数: - COUNT:用于计算指定列中的行数。 示例:SELECT COUNT(*) FROM 表名; - SUM:用于计算指定列的总和。 示例:SELECT SUM(列名) FROM 表名; - AVG:用于计算指定列的平均值。 示例:SELECT AVG(列名) FROM 表名; - MAX:用于找出指定列的最大值。 示例:SELECT MAX(列名) FROM 表名; - MIN:用于找出指定列的最小值。 示例:SELECT MIN(列名) FROM 表名; 2. 字符串函数: - CONCAT:用于将两个或多个字符串连接在一起。 示例:SELECT CONCAT(字符串1, 字符串2) FROM 表名; - SUBSTRING:用于提取字符串的一部分。 示例:SELECT SUBSTRING(字符串, 起始位置, 长度) FROM 表名; - UPPER:用于将字符串转换为大写。 示例:SELECT UPPER(字符串) FROM 表名; - LOWER:用于将字符串转换为小写。 示例:SELECT LOWER(字符串) FROM 表名; 3. 日期函数: - NOW:返回当前日期和时间。 示例:SELECT NOW() FROM 表名; - DATE_FORMAT:用于将日期格式化为指定的格式。 示例:SELECT DATE_FORMAT(日期列, '格式') FROM 表名; - DATE_ADD:用于在日期上添加指定的时间间隔。 示例:SELECT DATE_ADD(日期列, INTERVAL 数值 单位) FROM 表名; 4. 条件函数: - IF:根据条件返回不同的值。 示例:SELECT IF(条件, 值1, 值2) FROM 表名; - CASE:根据条件返回不同的值。 示例:SELECT CASE WHEN 条件1 THEN 值1 WHEN 条件2 THEN 值2 ELSE 值3 END FROM 表名;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

象在舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值