
hello你好 - 云代码空间
——
BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。
开发效率
维护性
| 
						 
							1
						 
						
							2
						 
						
							3
						 
						
							4
						 
						
							5
						 
						
							6
						 
						
							7
						 
						
							8
						 
						
							9
						 
						
							10
						 
						
							11
						 
						
							12
						 
						
							13
						 
						
							14
						 
						
							15
						 
						
							16
						 
						
							17
						 
						
							18
						 
						
							19
						 
						
							20
						 
						
							21
						 
						
							22
						 
						
							23
						 
						
							24
						 
					 | 
					
						 
								<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加入以下代码:
| 
						 
							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
						 
						
							40
						 
						
							41
						 
						
							42
						 
						
							43
						 
						
							44
						 
						
							45
						 
						
							46
						 
						
							47
						 
						
							48
						 
						
							49
						 
						
							50
						 
						
							51
						 
						
							52
						 
						
							53
						 
						
							54
						 
						
							55
						 
						
							56
						 
						
							57
						 
						
							58
						 
						
							59
						 
						
							60
						 
						
							61
						 
						
							62
						 
						
							63
						 
						
							64
						 
					 | 
					
						 
								@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:
| 
						 
							1
						 
						
							2
						 
					 | 
					
						 
								restart.include.beetl=/beetl-2.3.2.jar
							 
							
								restart.include.beetlsql=/beetlsql-2.3.1.jar
							 
						 | 
				
	
在templates下加一个index.btl文件。
加入jar和配置beatlsql的这些bean,以及resources这些配置之后,springboot就能够访问到数据库类。
| 
						 
							1
						 
						
							2
						 
						
							3
						 
						
							4
						 
						
							5
						 
						
							6
						 
						
							7
						 
						
							8
						 
						
							9
						 
						
							10
						 
					 | 
					
						 
								# 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');
							 
						 | 
				
	
| 
						 
							1
						 
						
							2
						 
						
							3
						 
						
							4
						 
						
							5
						 
						
							6
						 
						
							7
						 
						
							8
						 
						
							9
						 
						
							10
						 
					 | 
					
						 
								public class Account {
							 
							
								    private int id ;
							 
							
								    private String name ;
							 
							
								    private double money;
							 
							
								    getter...
							 
							
								    setter...
							 
							
								  } 
							 
						 | 
				
	
| 
						 
							1
						 
						
							2
						 
						
							3
						 
						
							4
						 
						
							5
						 
					 | 
					
						 
								public interface AccountDao extends BaseMapper<Account> {
							 
							
								    @SqlStatement(params = "name")
							 
							
								    Account selectAccountByName(String name);
							 
							
								}
							 
						 | 
				
接口继承BaseMapper,就能获取单表查询的一些性质,当你需要自定义sql的时候,只需要在resouses/sql/account.md文件下书写文件:
| 
						 
							1
						 
						
							2
						 
						
							3
						 
						
							4
						 
						
							5
						 
					 | 
					
						 
								selectAccountByName
							 
							
								===
							 
							
								*根据name获account
							 
							
								    select * from account where name= #name#
							 
						 | 
				
其中“=== ”上面是唯一标识,对应于接口的方法名,“* ”后面是注释,在下面就是自定义的sql语句,具体的见官方文档。