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

beatlsql 优点
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetlsql</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>
这几个依赖都是必须的。
整合阶段
由于springboot没有对 beatlsql的快速启动装配,所以需要我自己导入相关的bean,包括数据源,包扫描,事物管理器等。
在application加入以下代码:
@Bean(initMethod = "init", name = "beetlConfig")
public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() {
BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration();
ResourcePatternResolver patternResolver = ResourcePatternUtils.getResourcePatternResolver(new DefaultResourceLoader());
try {
// WebAppResourceLoader 配置root路径是关键
WebAppResourceLoader webAppResourceLoader = new WebAppResourceLoader(patternResolver.getResource("classpath:/templates").getFile().getPath());
beetlGroupUtilConfiguration.setResourceLoader(webAppResourceLoader);
} catch (IOException e) {
e.printStackTrace();
}
//读取配置文件信息
return beetlGroupUtilConfiguration;
}
@Bean(name = "beetlViewResolver")
public BeetlSpringViewResolver getBeetlSpringViewResolver(@Qualifier("beetlConfig") BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) {
BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
beetlSpringViewResolver.setContentType("text/html;charset=UTF-8");
beetlSpringViewResolver.setOrder(0);
beetlSpringViewResolver.setConfig(beetlGroupUtilConfiguration);
return beetlSpringViewResolver;
}
//配置包扫描
@Bean(name = "beetlSqlScannerConfigurer")
public BeetlSqlScannerConfigurer getBeetlSqlScannerConfigurer() {
BeetlSqlScannerConfigurer conf = new BeetlSqlScannerConfigurer();
conf.setBasePackage("com.forezp.dao");
conf.setDaoSuffix("Dao");
conf.setSqlManagerFactoryBeanName("sqlManagerFactoryBean");
return conf;
}
@Bean(name = "sqlManagerFactoryBean")
@Primary
public SqlManagerFactoryBean getSqlManagerFactoryBean(@Qualifier("datasource") DataSource datasource) {
SqlManagerFactoryBean factory = new SqlManagerFactoryBean();
BeetlSqlDataSource source = new BeetlSqlDataSource();
source.setMasterSource(datasource);
factory.setCs(source);
factory.setDbStyle(new MySqlStyle());
factory.setInterceptors(new Interceptor[]{new DebugInterceptor()});
factory.setNc(new UnderlinedNameConversion());//开启驼峰
factory.setSqlLoader(new ClasspathLoader("/sql"));//sql文件路径
return factory;
}
//配置数据库
@Bean(name = "datasource")
public DataSource getDataSource() {
return DataSourceBuilder.create().url("jdbc:mysql://127.0.0.1:3306/test").username("root").password("123456").build();
}
//开启事务
@Bean(name = "txManager")
public DataSourceTransactionManager getDataSourceTransactionManager(@Qualifier("datasource") DataSource datasource) {
DataSourceTransactionManager dsm = new DataSourceTransactionManager();
dsm.setDataSource(datasource);
return dsm;
}
在resouces包下,加META_INF文件夹,文件夹中加入spring-devtools.properties:
restart.include.beetl=/beetl-2.3.2.jar restart.include.beetlsql=/beetlsql-2.3.1.jar
在templates下加一个index.btl文件。
加入jar和配置beatlsql的这些bean,以及resources这些配置之后,springboot就能够访问到数据库类。
举个restful的栗子
初始化数据库的表
# DROP TABLE `account` IF EXISTS
CREATE TABLE `account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`money` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `account` VALUES ('1', 'aaa', '1000');
INSERT INTO `account` VALUES ('2', 'bbb', '1000');
INSERT INTO `account` VALUES ('3', 'ccc', '1000');
bean
public class Account {
private int id ;
private String name ;
private double money;
getter...
setter...
}
数据访问dao层
public interface AccountDao extends BaseMapper<Account> {
@SqlStatement(params = "name")
Account selectAccountByName(String name);
}
接口继承BaseMapper,就能获取单表查询的一些性质,当你需要自定义sql的时候,只需要在resouses/sql/account.md文件下书写文件:
selectAccountByName === *根据name获account select * from account where name= #name#
其中“=== ”上面是唯一标识,对应于接口的方法名,“* ”后面是注释,在下面就是自定义的sql语句,具体的见官方文档。
web层
这里省略了service层,实际开发补上。
@RestController
@RequestMapping("/account")
public class AccountController {
@Autowired
AccountDao accountDao;
@RequestMapping(value = "/list",method = RequestMethod.GET)
public List<Account> getAccounts(){
return accountDao.all();
}
@RequestMapping(value = "/{id}",method = RequestMethod.GET)
public Account getAccountById(@PathVariable("id") int id){
return accountDao.unique(id);
}
@RequestMapping(value = "",method = RequestMethod.GET)
public Account getAccountById(@RequestParam("name") String name){
return accountDao.selectAccountByName(name);
}
@RequestMapping(value = "/{id}",method = RequestMethod.PUT)
public String updateAccount(@PathVariable("id")int id , @RequestParam(value = "name",required = true)String name,
@RequestParam(value = "money" ,required = true)double money){
Account account=new Account();
account.setMoney(money);
account.setName(name);
account.setId(id);
int t=accountDao.updateById(account);
if(t==1){
return account.toString();
}else {
return "fail";
}
}
@RequestMapping(value = "",method = RequestMethod.POST)
public String postAccount( @RequestParam(value = "name")String name,
@RequestParam(value = "money" )double money) {
Account account = new Account();
account.setMoney(money);
account.setName(name);
KeyHolder t = accountDao.insertReturnKey(account);
if (t.getInt() > 0) {
return account.toString();
} else {
return "fail";
}
}
}
通过postman 测试,代码已全部通过。
个人使用感受,使用bealsql做了一些项目的试验,但是没有真正用于真正的生产环境,用起来非常的爽。但是springboot没有提供自动装配的直接支持,需要自己注解bean。另外使用这个orm的人不太多,有木有坑不知道,在我使用的过程中没有遇到什么问题。另外它的中文文档比较友好。
源码下载:https://github.com/forezp/SpringBootLearning
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# springboot整合
# beatlsql
# springboot
# springboot实现的https单向认证和双向认证(java生成证书)
# springboot基于keytool实现https的双向认证示例教程
# Springboot实现TLS双向认证的方法
# 自定义
# 都是
# 是一个
# 文档
# 在我
# 太多
# 就能
# 当你
# 只需
# 适用于
# 要在
# 所需
# 而不
# 人不
# 管理器
# 这几个
# 更容易
# 什么问题
# 使用这个
# 补上
相关文章:
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
建站主机是否属于云主机类型?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
网站网页制作专业公司,怎样制作自己的网页?
如何用PHP工具快速搭建高效网站?
如何自定义建站之星网站的导航菜单样式?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何在阿里云服务器自主搭建网站?
建站主机选哪家性价比最高?
如何选择高效可靠的多用户建站源码资源?
如何挑选高效建站主机与优质域名?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
如何用IIS7快速搭建并优化网站站点?
如何零成本快速生成个人自助网站?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
制作网站的公司有哪些,做一个公司网站要多少钱?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
清除minerd进程的简单方法
如何选择最佳自助建站系统?快速指南解析优劣
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何确保西部建站助手FTP传输的安全性?
如何通过VPS建站实现广告与增值服务盈利?
建站之星24小时客服电话如何获取?
建站主机与虚拟主机有何区别?如何选择最优方案?
山东网站制作公司有哪些,山东大源集团官网?
如何配置WinSCP新建站点的密钥验证步骤?
如何在VPS电脑上快速搭建网站?
如何制作一个表白网站视频,关于勇敢表白的小标题?
简单实现Android验证码
建站VPS能否同时实现高效与安全翻墙?
学校为何禁止电信移动建设网站?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
建站主机助手选型指南:2025年热门推荐与高效部署技巧
建站之星安装提示数据库无法连接如何解决?
Swift中switch语句区间和元组模式匹配
如何配置IIS站点权限与局域网访问?
如何零基础开发自助建站系统?完整教程解析
装修招标网站设计制作流程,装修招标流程?
如何用低价快速搭建高质量网站?
如何高效利用亚马逊云主机搭建企业网站?
,如何利用word制作宣传手册?
如何快速辨别茅台真假?关键步骤解析
已有域名建站全流程解析:网站搭建步骤与建站工具选择
定制建站策划方案_专业建站与网站建设方案一站式指南
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
建站之星代理如何获取技术支持?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
*请认真填写需求信息,我们会在24小时内与您取得联系。