有哪些竞价网站,crm和erp的区别,西地那非使用三大忌,重庆制作网站怎么选对于新手学习SpringBoot开发#xff0c;可能最急迫的事情就是尽快掌握数据库的开发。目前数据库开发主要流行使用Mybatis和Mybatis Plus,不过这2个框架对于新手而言需要一定的时间掌握#xff0c;如果快速上手数据库开发#xff0c;可以先按照本文介绍的方式使用JdbcTemplat… 对于新手学习SpringBoot开发可能最急迫的事情就是尽快掌握数据库的开发。目前数据库开发主要流行使用Mybatis和Mybatis Plus,不过这2个框架对于新手而言需要一定的时间掌握如果快速上手数据库开发可以先按照本文介绍的方式使用JdbcTemplate进行数据库开发。另外不管用那种开发方式都需要进行数据库链接的配置。 本文数据库链接采用的阿里的druid数据源数据库采用Mysql数据库。首先我们在application-dev.yml中配置数据库链接这里定义了两个数据源不过为了演示两个数据源都指向的同一个数据库下面是openjweb-sys工程下的application-dev.yml:
server:port: 8001spring:datasource:ds1:type: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql://localhost:3306/erpusername: rootpassword: rootds2:type: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql://localhost:3306/erpusername: rootpassword: root
在主工程的pom.xml中引入了druid依赖和springframework的jdbc依赖
!--druid--dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.23/version
/dependency
!--jdbc--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependency
因为考虑到不是每个子工程都需要链接mysql数据库所以mysql的依赖放在openjweb-sys的pom.xml中不过考虑到配置类的都放到starter模块里所以openjweb-sys里配置了依赖datasource-openjweb-starter:
dependencygroupIdorg.openjweb/groupIdartifactIddatasource-openjweb-starter/artifactIdversion0.0.1-SNAPSHOT/version
/dependency
而在datasource-openjweb-starter的pom.xml里引入了mysql依赖
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.connector.version}/versionscoperuntime/scope
/dependency
其中${mysql.connector.version}在主工程的pom.xml中的配置
mysql.connector.version8.0.27/mysql.connector.version
接下来就可以开发数据库配置类和调用示例首先在openjweb-sys的org.openjweb.sys.config下面开发一个DataSourceConfig类
package org.openjweb.sys.config;
import javax.sql.DataSource;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import com.alibaba.druid.pool.DruidDataSource;Slf4j
Configuration
public class DataSourceConfig {PrimaryBean(name dsOne)ConfigurationProperties(spring.datasource.ds1)DataSource dsOne() {DruidDataSource ds1 new DruidDataSource();return ds1;}//BeanBean(name dsTwo)ConfigurationProperties(spring.datasource.ds2)DataSource dsTwo() {DruidDataSource ds2 new DruidDataSource();return ds2;}//为第一个数据源绑定一个事务管理器Bean(name transactionManager1)public DataSourceTransactionManager dataSourceTransactionManagerOne(Qualifier(dsOne) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}Bean(name transactionManager2)public DataSourceTransactionManager dataSourceTransactionManagerTwo(Qualifier(dsTwo) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}}
其中ConfigurationProperties(spring.datasource.ds1)是自动从application-dev.yml的配置中读取ds1的设置注入到组件中ds2同理。
然后开发JdbcTemplateConfig类
package org.openjweb.sys.config;import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate; Configurationpublic class JdbcTemplateConfig {private static JdbcTemplate defaultJdbcTemplate null;public static JdbcTemplate getDefaultJdbcTemplate(){return defaultJdbcTemplate;}Bean(name jdbcTemplateOne)JdbcTemplate jdbcTemplateOne(Qualifier(dsOne) DataSource dataSource) {JdbcTemplate jdbcTemplate new JdbcTemplate(dataSource);this.defaultJdbcTemplate jdbcTemplate;return jdbcTemplate;//return new JdbcTemplate(dataSource);}Bean(name jdbcTemplateTwo)JdbcTemplate jdbcTemplateTwo(Qualifier(dsTwo) DataSource dataSource) {return new JdbcTemplate(dataSource);}}
在上面的类中定义了2个Bean,分别指向了dsOne和dsTwo两个数据源。
接下来可以利用这2个JdbcTemplate开发接口应用。
现在在openjweb-sys模块的org.openjweb.sys.api下创建一个演示接口类为DemoDBApi:
package org.openjweb.sys.api;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.List;
import java.util.Map;/*** http://localhost:8001/demo/queryParam?parmNameversion* */
RestController
RequestMapping(/demo)
Slf4j
public class DemoDBApi {Resource(name jdbcTemplateOne)private JdbcTemplate service;Resource(name jdbcTemplateTwo)private JdbcTemplate service2;GetMapping(queryParam)public JSONObject queryParam(RequestParam(value parmName)String parmName){//查询countInteger count service.queryForObject(select count(*) from comm_system_parms,Integer.class);JSONObject json new JSONObject();json.put(num,count);//下面按查询条件查询--查单个值parmName version;//因为是演示程序这里不从请求中获取参数String sql select parm_value from comm_system_parms where parm_name?;String parmValue service.queryForObject(sql,new Object[]{parmName},String.class);log.info(parmValue);//使用log.info需要在类前面加Slf4j 注解//查询列表JSONArray jsonArray new JSONArray();String parmLike version%;String sql1 select parm_name,parm_value from comm_system_parms where parm_name like ?;ListMapString,Object list service.queryForList(sql1,new Object[]{parmLike});if(list!nulllist.size()0){for (MapString,Object data:list ) {JSONObject dataJson new JSONObject();dataJson.put(parmName,data.get(parm_name)null?:data.get(parm_name).toString());dataJson.put(parmValue,data.get(parm_value)null?:data.get(parm_value).toString());jsonArray.add(dataJson);}}//如果结果集顶多一条记录查询一条记录可使用queryForMapMapString,Object map null;//这次使用第二个数据源为了演示方便链接配置实际指向一个数据库map service2.queryForMap(select * from comm_system_parms where parm_name?,new Object[]{parmName});if(map!null){log.info(map查到数据);log.info(map.get(parm_value)null?:map.get(parm_value).toString());}json.put(count,count);json.put(data,jsonArray);return json;}
}
在上面的例子中分别演示了select count(*)、查询结果为单一字符串、查询结果为数据列表(queryForList)、查询结果为一条记录多个字段queryForMap等。查看演示效果可启动SpringBoot后访问
http://localhost:8001/demo/queryParam?parmNameversion
对于新手如果还不了解mybatis或mybatis-plus可使用jdbcTemplate进行快速开发当然如果在生产环境中使用的话还要考虑到接口调用的权限。下面给出本示例的comm_system_parm表结构以方便大家使用 CREATE TABLE comm_system_parms ( pk_id varchar(40) NOT NULL, row_id varchar(40) NOT NULL, sort_no bigint(20) DEFAULT NULL, create_dt varchar(23) DEFAULT NULL, update_dt varchar(23) DEFAULT NULL, create_uid varchar(32) DEFAULT NULL, update_uid varchar(32) DEFAULT NULL, data_flg varchar(6) DEFAULT NULL, flow_status varchar(16) DEFAULT NULL, obj_name varchar(40) DEFAULT NULL, master_row_id varchar(40) DEFAULT NULL, flow_trans_id varchar(40) DEFAULT NULL, parm_old_values varchar(255) DEFAULT NULL, parm_name varchar(40) NOT NULL, parm_desc varchar(255) DEFAULT NULL, parm_value varchar(2000) DEFAULT NULL, PRIMARY KEY (pk_id), UNIQUE KEY parm_name (parm_name), KEY idx_1730778572260000923 (parm_name) ) ENGINEInnoDB DEFAULT CHARSETutf8; INSERT INTO comm_system_parms VALUES (85, 61a31b6fae8c4cb5a3ff2e343e7402b1, NULL, 2012-05-01 18:32:59, 2016-05-25 09:35:01, admin, admin, NULL, 00, NULL, NULL, 1335868379171000735, NULL, version, 平台版本号, 3.6);
项目实例地址见github:https://github.com/openjweb/cloud/tree/masterhttps://github.com/openjweb/cloud/tree/master