(六)关于beetlsql版本(分支)的说明

beetlsql也是一个功能强大的dao工具,很久之前看到了,就想替换一下mybatis,试试想要的功能。

基本上,mybatis就是那一堆xml文件写得比较蛋疼,当然也可以不写xml,但是为了sql语句方便管理,就都写在xml文件了,主要还是喜欢动态拼接的功能,省事,灵活。

首先就是配置文件的改动:以前用的是org.mybatis.spring.SqlSessionFactoryBean,现在用的是org.beetl.sql.ext.spring4.SqlManagerFactoryBean,以前的配置文件中写得比较少,要再指定一个mybatis用的mapper配置文件。因为项目里还用了druid做连接池,很多东西都不用改。当然druid这个根据连接字符串自动识别驱动,也是比较方便,不用再指定驱动。

按照以前的写法,基本就是封装一个公用的dao,然后就直接操作这个dao了,用了beetlsql,直接用SQLManager就可以实现以前的功能了。说说sql语句,也就是markdown文件中的替换,用@where() 替换<where>标签,用@if(isNotEmpty(age)){ and age = #age# @} 替换 <if test="age!=null">标签,其他的东西暂时用的不多,以前使用${name} 这种拼接字符串的形式,可以改为#text(name)#,text还有其他用法,这个工程暂时没用到。还有foreach 替换为 @for,特殊的情况,比如要写a in (?,?,?,?) 可以用join来实现,a in ( #join(ids)#)。

如果要用到缓存呢?关键就是用到SimpleCacheInterceptor,把想要加缓存的命名空间都加入初始化参数,比如这里的menuinfo,roleinfo。配置文件修改如下:

	<bean id="sqlManagerFactory" 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.MySqlStyle">
			</bean>
		</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.DefaultNameConversion">
			</bean>
		</property>
		<property name="interceptors">
			<list>
				<bean class="org.beetl.sql.ext.DebugInterceptor"></bean>
				<bean class="org.beetl.sql.ext.SimpleCacheInterceptor">
					<constructor-arg>
						<list>
							<value>menuinfo</value>
							<value>roleinfo</value>
						</list>
					</constructor-arg>
				</bean>
			</list>
		</property>
	</bean>

查询、计数、添加、删除、修改的使用:

// 添加
sqlManager.insert(MenuInfo.class, instance);
// 修改
index.put("xxx", xx);
sqlManager.updateTemplateById(MenuInfo.class, index);
// 批量修改
sqlManager.updateBatchTemplateById(MenuInfo.class, indexs);
// 删除
sqlManager.deleteById(MenuInfo.class, menuid);
// 条件查询
return sqlManager.select("menuinfo.selectMenuInfos", MenuInfo.class, index);
// 计算条数
return sqlManager.intValue("menuinfo.selectMenuInfosCount", index);

查询数据、查询条数还有其他更简便的做法,暂时没深入研究,就用这种土办法吧。根据id修改、删除,如果id字段的名称是id,不用在Pojo类中加入注解,这里因为不是自增主键,所以用了@AssignID,自增的可以用@AutoID。这样就可以不用写修改删除语句了,偷懒了→_→。

未来还要再看看其他数据库分页的使用,数据量大的分页、oracle的分页等。mysql的分页挺简单的,就是要加个配置项,从0开始,OFFSET_START_ZERO = true。

码云地址https://gitee.com/sskicgah/demoframe/tree/beetlsql/

整体来说,改造起来很快就完成了,也没遇到什么大的问题,就这样,完。

转载于:https://my.oschina.net/u/2274874/blog/1490589

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值