关于beetlsql 的整合 ssbヽ( ̄▽ ̄)ノ 框架

今天突然兴起想把beetlsql整合一下看看beetlsql是不是比mybatis方便

首先把我贴出我的pom文件

我把mybatis也加在其中,后期可以对比测试,自己玩,如果不需要可以删除

 

<?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>frameTest</groupId>
    <artifactId>001</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <!-- spring版本号 -->
        <spring.version>4.0.2.RELEASE</spring.version>
        <!-- mybatis版本号 -->
        <mybatis.version>3.2.6</mybatis.version>
        <!-- log4j日志文件管理包版本 -->
        <slf4j.version>1.7.7</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
        <beetl.version>2.5.2</beetl.version>
        <beetlsql.version>2.6.5</beetlsql.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
            <scope>test</scope>
        </dependency>
        <!-- spring核心包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <!-- mybatis/spring包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- beetlsql实验 -->
        <dependency>
            <groupId>com.ibeetl</groupId>
            <artifactId>beetl</artifactId>
            <version>${beetl.version}</version>
        </dependency>
        <dependency>
            <groupId>com.ibeetl</groupId>
            <artifactId>beetlsql</artifactId>
            <version>${beetlsql.version}</version>
        </dependency>
        <!-- beetlsql实验 -->
        <!-- 导入java ee jar 包 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
        <!-- 导入postgresql数据库链接jar包 -->
        <dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.1-901-1.jdbc4</version>
            <scope>compile</scope>
        </dependency>
        <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- JSTL标签类 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- 日志文件管理包 -->
        <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>


        <!-- 格式化对象,方便输出日志 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.41</version>
        </dependency>


        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- log end -->
        <!-- 映入JSON -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
        <!-- 上传组件包 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.9</version>
        </dependency>


    </dependencies>


</project>

上面是我添加的

<!-- beetlsql实验 -->
<dependency>
    <groupId>com.ibeetl</groupId>
    <artifactId>beetl</artifactId>
    <version>${beetl.version}</version>
</dependency>
<dependency>
    <groupId>com.ibeetl</groupId>
    <artifactId>beetlsql</artifactId>
    <version>${beetlsql.version}</version>
</dependency>
<!-- beetlsql实验 -->

这里就是我的添加的整合的插件了

为了接下来的工作,我们建个表

CREATE TABLE "public"."user_t" (
"id" int4 DEFAULT nextval('user_t_id_seq'::regclass) NOT NULL,
"user_name" varchar(40) COLLATE "default" NOT NULL,
"password" varchar(255) COLLATE "default" NOT NULL,
"age" int4 NOT NULL,
CONSTRAINT "user_t_pkey" PRIMARY KEY ("id")
)

主要,我是postgreSql其他数据库的自行更改

然后我们配置好数据源,以及将beetlsql与spring的一些配置

spring-beetlsql.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">


    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="${initialSize}"></property>
        <!-- 连接池最大数量 -->
        <property name="maxActive" value="${maxActive}"></property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="${maxIdle}"></property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="${minIdle}"></property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="${maxWait}"></property>
    </bean>

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean name="beetlSqlScannerConfigurer" class="org.beetl.sql.ext.spring4.BeetlSqlScannerConfigurer">
        <!-- 哪些类可以自动注入 -->
        <property name="basePackage" value="org.beetl.sql.ext.spring4"/>
        <!-- 通过类后缀 来自动注入Dao -->
        <property name="daoSuffix" value="Dao"/>
        <property name="sqlManagerFactoryBeanName" value="sqlManagerFactoryBean"/>
    </bean>

    <bean id="sqlManagerFactoryBean" class="org.beetl.sql.ext.spring4.SqlManagerFactoryBean">
        <property name="cs" >
            <bean  class="org.beetl.sql.ext.spring4.BeetlSqlDataSource">
                <property name="masterSource" ref="dataSource"></property>
            </bean>
        </property>
        <property name="dbStyle">
            <bean class="org.beetl.sql.core.db.H2Style"/>
        </property>
        <property name="sqlLoader">
            <bean class="org.beetl.sql.core.ClasspathLoader">
                <property name="sqlRoot" value="/sql"></property>
            </bean>
        </property>
        <property name="nc">
            <bean class="org.beetl.sql.core.UnderlinedNameConversion"/>
        </property>
        <property name="interceptors">
            <list>
                <bean class="org.beetl.sql.ext.DebugInterceptor"></bean>
            </list>
        </property>
    </bean>

</beans>

spring.xml核心配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    <!-- 自动扫描 -->
    <context:component-scan base-package="com.starsSun" />
    <!-- 引入配置文件 -->
    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:jdbc.properties" />
    </bean>

    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:/mapping/*.xml" />
    </bean>

    <!-- Mapper接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.starsSun.Mapper" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <import resource="spring-beetlsql.xml" />

</beans>

然后是beetlsql.properties

ENGINE=org.beetl.sql.core.engine.SQLTemplateEngine
DELIMITER_PLACEHOLDER_START=#{
DELIMITER_PLACEHOLDER_END=}
DELIMITER_STATEMENT_START=@
DELIMITER_STATEMENT_END=
HTML_TAG_SUPPORT = false
CHARSET=
FN.use = org.beetl.sql.core.engine.UseFunction
FN.globalUse = org.beetl.sql.core.engine.GlobalUseFunction
FN.text = org.beetl.sql.core.engine.TextFunction
FN.join = org.beetl.sql.ext.JoinFunction
FN.isEmpty=org.beetl.sql.ext.EmptyExpressionFunction
FN.page=org.beetl.sql.core.engine.PageQueryFuntion
FN.orm.many=org.beetl.sql.core.orm.ORMManyEntityFunction
FN.orm.single=org.beetl.sql.core.orm.ORMSingleEntityFunction
TAG.trim= org.beetl.sql.core.engine.TrimTag
TAG.pageTag= org.beetl.sql.core.engine.PageQueryTag
ERROR_HANDLER = org.beetl.sql.core.engine.BeetlSQLTemplateExceptionHandler
PRODUCT_MODE = false
OFFSET_START_ZERO = false

然后beetlsql有意思的一点就出现了,相比mybatis-generator 自动生成实体类,dao文件

他更方便

我的test方法

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring.xml"})
public class UserTest {
  

    @Autowired
    SQLManager sqlManager;

    @Test
    public  void testGenerationTeetlSql() throws Exception{
        sqlManager.genPojoCodeToConsole("user_t");
        sqlManager.genSQLTemplateToConsole("user_t");
    }


}

界面输出的样式

import java.math.*;
import java.util.Date;
import java.sql.Timestamp;

/*

* gen by beetlsql 2017-07-06
*/
public class UserT  {
    private Integer id ;
    private Integer age ;
    private String password ;
    private String userName ;
    
    public UserT() {
    }
    
    public Integer getId(){
        return  id;
    }
    public void setId(Integer id ){
        this.id = id;
    }
    
    public Integer getAge(){
        return  age;
    }
    public void setAge(Integer age ){
        this.age = age;
    }
    
    public String getPassword(){
        return  password;
    }
    public void setPassword(String password ){
        this.password = password;
    }
    
    public String getUserName(){
        return  userName;
    }
    public void setUserName(String userName ){
        this.userName = userName;
    }
    

}

sample
===
* 注释

    select #use("cols")# from user_t where #use("condition")#

cols
===

    id,user_name,password,age

updateSample
===

    "id"=#id#,"user_name"=#userName#,"password"=#password#,"age"=#age#

condition
===

    1 = 1  
    @if(!isEmpty(userName)){
     and "user_name"=#userName#
    @}
    @if(!isEmpty(password)){
     and "password"=#password#
    @}
    @if(!isEmpty(age)){
     and "age"=#age#
    @}

 

借上面的输出我们就可以建对应的实体类了

注意的是

<property name="sqlLoader">
    <bean class="org.beetl.sql.core.ClasspathLoader">
        <property name="sqlRoot" value="/sql"></property>
    </bean>
</property>

我们的md文件路径是要与这里的value一致的否则会扫描不到

然后编写测试类

    @Test
    public  void testTeetlSql(){
        User id1 = sqlManager.selectSingle ("user.sample",new HashMap<String, Object>().put("id", "1"), User.class );        
        System.out.println(id1);     
    }

测试通过就算是ok了

转载于:https://my.oschina.net/u/3433563/blog/1186491

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值