beetlSQL使用介绍

beetlSQL超过MyBatis的全功能Java DAO工具。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,sqllite,DB2.

由于现在大部分都已经通过maven来管理项目,本篇我们则5分钟搭建一个小项目,来体验一下beetlSQL。

1、maven依赖(beetlSQL以及mysql)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<dependency>
             <groupid>com.ibeetl</groupid>
             beetlsql</artifactid>
             <version>2.10.2</version>
         </dependency>
         <dependency>
             <groupid>com.ibeetl</groupid>
             beetl</artifactid>
             <version>2.7.26</version>
         </dependency>
 
         <dependency>
             <groupid>mysql</groupid>
             mysql-connector-java</artifactid>
             <version>5.1.32</version>
         </dependency>

2、创建一个Pojo类,与数据库对应

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
  * @Author:XXX
  * @Description:
  * @ Date : Create in 16:01 2018/1/22
  */
public class User extends TailBean{
     private Integer id ;
     private Integer age ;
     /**
      * 用户角色
      */
     private Integer roleId ;
     private String name ;
     /**
      * 用户名称
      */
     private String userName ;
     private Date createDate ;

3、代码实践

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public static void connectionBeet(String driver, String url, String userName, String password ) {
        ConnectionSource source = ConnectionSourceHelper.getSimple(driver, url, userName, password );
        DBStyle mysql = new MySqlStyle();
        // sql语句放在classpagth的/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()});
 
        //插入一条记录,主键ID自增
        /*User user=new User();
        user.setAge(19);
        user.setName("haha");
        sqlManager.insertTemplate(user);*/
 
        //根据主键查询唯一记录
        /*int id=2;
        user=sqlManager.unique(User.class,id);*/
 
        //根据主键更新,属性为 null 的不会更新
        /*User newUser=new User();
        newUser.setId(1);
        newUser.setAge(18);
        sqlManager.updateTemplateById(newUser);*/
 
        //根据字段值查询列表
        /*User queryUser = new User();
        queryUser.setAge(19);
        List<user> users = sqlManager.template(queryUser);
        System.out.println(users.size());*/
 
        //使用.md文件实现功能(详情 User .md文件)
        User queryUser2=new User ();
        queryUser2.setAge(19);
        List< user > users=sqlManager. select ( "user.select" , User .class,queryUser2);
        System. out .println(users. size ());
 
    }</ user ></ user >
?
1
2
3
4
5
6
7
public static void main(String[] args) {
         String driver = "com.mysql.jdbc.Driver" ;
         String url = "jdbc:mysql://XXX:5001/tmp?useUnicode=true&characterEncoding=utf-8" ;
         String userName = "root" ;
         String password = "XXX" ;
         connectionBeet(driver, url, userName, password );
     }

使用beetlSQL,我们可以简写好多SQL语句,比如上述实例中的实践,除了md文件实践以外,其他的都是自动生成SQL,很好用的api,可以直接查询官方文档使用。

对于.md文件的,如下:

?
1
2
3
4
5
6
7
8
9
select
===
select * from user where 1=1
@if(!isEmpty(age)){
and age=#age#
@}
@if(!isEmpty( name )){
and name =# name #
@}

需求为:根据年龄和名字查询信息,如果不为空的话。

1. ===上面试sql语句的唯一标示,下边则是sql语句实现;

2. @和回车符都是定界符号;

3. #是占位符,两个#合成,会生成一个?号

4. isEmpty是beetl的一个函数,用来判断变量是否为空或者是否不存在.

5. 文件名约定为类名,但是和普通类名规范不同的是首字母小写。

这里要注意的一点是:主键需要通过注解来说明,如@AutoID,或者@AssignID等,但如果是自增主键,且属性是名字是id,则不需要注解,自动认为是自增主键。如果属性值为ID的话,则可以直接忽略。

4、常用定界符号

事先说明,一些定位符号的使用是可以自定义设计的,本篇,小编则主要说几个常用的符号。

表达式举例
模糊查询select * from user where name like #’%’+name+’%’#
逻辑表达式user.gender==1?’女’:’男’# 支持 逻辑与,或,非,以及三元表达式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值