由于项目中需要连接两个mysql数据原,所以需要两套访问配置
连接串配置在需要用到数据库连接项目中db.properties
mysql.dbUrl=jdbc:mysql://127.0.0.1:3306/envmanagement?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useOldAliasMetadataBehavior=true&allowMultiQueries=true
mysql.dbUser=root
mysql.dbPassword=123456
mysql2.dbUrl=jdbc:mysql://172.16.100.30:3306/better?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useOldAliasMetadataBehavior=true&allowMultiQueries=true
mysql2.dbUser=root
mysql2.dbPassword=123456
应用站点的Springboot启动class Application 中加入配置文件的读取
配置1
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class ConnectionConfig {
@Value("${sqlserver.dbUrl}")
private String sqlserverDbUrl;
@Value("${sqlserver.dbUser}")
private String sqlserverDbUser;
@Value("${sqlserver.dbPassword}")
private String sqlserverDbPassword;
@Value("${mysql.dbUrl}")
private String mysqlDbUrl;
@Value("${mysql.dbUser}")
private String mySqlDbUser;
@Value("${mysql.dbPassword}")
private String mysqlDbPassword;
public String getSqlserverDbUrl() {
return sqlserverDbUrl;
}
public void setSqlserverDbUrl(String sqlserverDbUrl) {
this.sqlserverDbUrl = sqlserverDbUrl;
}
public String getSqlserverDbUser() {
return sqlserverDbUser;
}
public void setSqlserverDbUser(String sqlserverDbUser) {
this.sqlserverDbUser = sqlserverDbUser;
}
public String getSqlserverDbPassword() {
return sqlserverDbPassword;
}
public void setSqlserverDbPassword(String sqlserverDbPassword) {
this.sqlserverDbPassword = sqlserverDbPassword;
}
public String getMysqlDbUrl() {
return mysqlDbUrl;
}
public void setMysqlDbUrl(String mysqlDbUrl) {
this.mysqlDbUrl = mysqlDbUrl;
}
public String getMySqlDbUser() {
return mySqlDbUser;
}
public void setMySqlDbUser(String mySqlDbUser) {
this.mySqlDbUser = mySqlDbUser;
}
public String getMysqlDbPassword() {
return mysqlDbPassword;
}
public void setMysqlDbPassword(String mysqlDbPassword) {
this.mysqlDbPassword = mysqlDbPassword;
}
}
配置2
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class ConnectionConfig2 {
@Value("${mysql2.dbUrl}")
private String mysqlDbUrl2;
@Value("${mysql2.dbUser}")
private String mySqlDbUser2;
@Value("${mysql2.dbPassword}")
private String mysqlDbPassword2;
public String getMysqlDbUrl2() {
return mysqlDbUrl2;
}
public void setMysqlDbUrl2(String mysqlDbUrl2) {
this.mysqlDbUrl2 = mysqlDbUrl2;
}
public String getMySqlDbUser2() {
return mySqlDbUser2;
}
public void setMySqlDbUser2(String mySqlDbUser2) {
this.mySqlDbUser2 = mySqlDbUser2;
}
public String getMysqlDbPassword2() {
return mysqlDbPassword2;
}
public void setMysqlDbPassword2(String mysqlDbPassword2) {
this.mysqlDbPassword2 = mysqlDbPassword2;
}
}
mybatis配置1
import com.alibaba.druid.pool.DruidDataSource;
//import com.baidu.disconf.client.DisconfMgrBeanSecond;
import com.ymatou.envmanagement.infrastructure.util.DataSourceUtils;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.support.TransactionTemplate;
import javax.sql.DataSource;
import java.util.Properties;
@Configuration
@MapperScan(
basePackages = {
"com.ymatou.envmanagement.infrastructure.mysqldb.mapper",
"com.ymatou.envmanagement.infrastructure.mysqldb.query"
},
sqlSessionTemplateRef = "mySqlSessionTemplate"
)
@EnableTransactionManagement(proxyTargetClass = true)
public class MySqlDataSourceConfig {
@Autowired
private ConnectionConfig connectionConfig;
//加上这个隐性依赖
// @Autowired
// private DisconfMgrBeanSecond disconfMgrBeanSecond;
@Bean(name = "mySqlDataSource")
public DataSource mySqlDataSource() {
DruidDataSource dataSource = DataSourceUtils.initDataSource();
dataSource.setUrl(connectionConfig.getMysqlDbUrl());
dataSource.setUsername(connectionConfig.getMySqlDbUser());
dataSource.setPassword(connectionConfig.getMysqlDbPassword());
return dataSource;
}
@Bean(name = "mySqlSessionFactory")
public SqlSessionFactory mySqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
// 获取properties中的对应配置信息
String mapperLocation = "classpath*:sqlmap/mysql/**/*.xml";
String configLocation = "classpath:mybatis-settings.xml";
Properties properties = new Properties();
sessionFactory.setDataSource(mySqlDataSource());
sessionFactory.setConfigurationProperties(properties);
// 设置MapperLocations configLocation路径
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resourcePatternResolver.getResources(mapperLocation));
sessionFactory.setConfigLocation(resourcePatternResolver.getResource(configLocation));
return sessionFactory.getObject();
}
@Bean(name = "mySqlSessionTemplate")
public SqlSessionTemplate mySqlSessionTemplate() throws Exception {
SqlSessionTemplate sqlSession = new SqlSessionTemplate(mySqlSessionFactory());
return sqlSession;
}
@Bean(name = "mySqlTransactionManager")
public PlatformTransactionManager mySqlTransactionManager() {
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(mySqlDataSource());
//transactionManager.setDefaultTimeout(1);
return transactionManager;
}
@Bean(name = "mySqlTransactionTemplate")
public TransactionTemplate mySqlTransactionTemplate() {
return new TransactionTemplate(mySqlTransactionManager());
}
}
mybatis配置2
import com.alibaba.druid.pool.DruidDataSource;
import com.ymatou.envmanagement.infrastructure.util.DataSourceUtils;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.support.TransactionTemplate;
import javax.sql.DataSource;
import java.util.Properties;
@Configuration
@MapperScan(
basePackages = {
"com.ymatou.envmanagement.infrastructure.mysqldb2.mapper",
"com.ymatou.envmanagement.infrastructure.mysqldb2.query"
},
sqlSessionTemplateRef = "mySqlSessionTemplate2"
)
@EnableTransactionManagement(proxyTargetClass = true)
public class MySqlDataSourceConfig2 {
@Autowired
private ConnectionConfig2 connectionConfig2;
//加上这个隐性依赖
// @Autowired
// private DisconfMgrBeanSecond disconfMgrBeanSecond;
@Bean(name = "mySqlDataSource2")
public DataSource mySqlDataSource() {
DruidDataSource dataSource = DataSourceUtils.initDataSource();
dataSource.setUrl(connectionConfig2.getMysqlDbUrl2());
dataSource.setUsername(connectionConfig2.getMySqlDbUser2());
dataSource.setPassword(connectionConfig2.getMysqlDbPassword2());
return dataSource;
}
@Bean(name = "mySqlSessionFactory2")
public SqlSessionFactory mySqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
// 获取properties中的对应配置信息
String mapperLocation = "classpath*:sqlmap/mysql2/**/*.xml";
String configLocation = "classpath:mybatis-settings.xml";
Properties properties = new Properties();
sessionFactory.setDataSource(mySqlDataSource());
sessionFactory.setConfigurationProperties(properties);
// 设置MapperLocations configLocation路径
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resourcePatternResolver.getResources(mapperLocation));
sessionFactory.setConfigLocation(resourcePatternResolver.getResource(configLocation));
return sessionFactory.getObject();
}
@Bean(name = "mySqlSessionTemplate2")
public SqlSessionTemplate mySqlSessionTemplate() throws Exception {
SqlSessionTemplate sqlSession = new SqlSessionTemplate(mySqlSessionFactory());
return sqlSession;
}
@Bean(name = "mySqlTransactionManager2")
public PlatformTransactionManager mySqlTransactionManager() {
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(mySqlDataSource());
//transactionManager.setDefaultTimeout(1);
return transactionManager;
}
@Bean(name = "mySqlTransactionTemplate2")
public TransactionTemplate mySqlTransactionTemplate() {
return new TransactionTemplate(mySqlTransactionManager());
}
mybatis-generator
可以用mybatis-generator来生成固定的ORM代码,具体操作参考:http://blog.csdn.net/chenjiazhu/article/details/77849645
ORM代码示例
以node表做示例
NodePo
public class NodePo { /** * id INTEGER(10) 必填<br> * */ private Integer id; /** * name VARCHAR(200)<br> * */ private String name; /** * url VARCHAR(500)<br> * */ private String url; /** * sitstatus BIT 默认值[0]<br> * */ private Boolean sitstatus; /** * time VARCHAR(50)<br> * */ private String time; /** * active BIT 默认值[0]<br> * */ private Boolean active; /** * domain VARCHAR(50)<br> * */ private String domain; /** * script VARCHAR(500)<br> * */ private String script; /** * stressstatus BIT 默认值[0]<br> * */ private Boolean stressstatus; /** * uatstatus BIT 默认值[0]<br> * */ private Boolean uatstatus; /** * checktype INTEGER(10) 默认值[1]<br> * */ private Integer checktype; /** * checkvalue VARCHAR(200) 默认值[ok]<br> * */ private String checkvalue; /** * stressemailactive BIT 默认值[0]<br> * */ private Boolean stressemailactive; /** * emails VARCHAR(500)<br> * */ private String emails; /** * sitemailactive BIT<br> * */ private Boolean sitemailactive; /** * uatemailactive BIT 默认值[1]<br> * */ private Boolean uatemailactive; /** * nodecol VARCHAR(45) 默认值[1]<br> * */ private String nodecol; /** * cron VARCHAR(100)<br> * */ private String cron; /** * id INTEGER(10) 必填<br> * 获得 */ public Integer getId() { return id; } /** * id INTEGER(10) 必填<br> * 设置 */ public void setId(Integer id) { this.id = id; } /** * name VARCHAR(200)<br> * 获得 */ public String getName() { return name; } /** * name VARCHAR(200)<br> * 设置 */ public void setName(String name) { this.name = name == null ? null : name.trim(); } /** * url VARCHAR(500)<br> * 获得 */ public String getUrl() { return url; } /** * url VARCHAR(500)<br> * 设置 */ public void setUrl(String url) { this.url = url == null ? null : url.trim(); } /** * sitstatus BIT 默认值[0]<br> * 获得 */ public Boolean getSitstatus() { return sitstatus; } /** * sitstatus BIT 默认值[0]<br> * 设置 */ public void setSitstatus(Boolean sitstatus) { this.sitstatus = sitstatus; } /** * time VARCHAR(50)<br> * 获得 */ public String getTime() { return time; } /** * time VARCHAR(50)<br> * 设置 */ public void setTime(String time) { this.time = time == null ? null : time.trim(); } /** * active BIT 默认值[0]<br> * 获得 */ public Boolean getActive() { return active; } /** * active BIT 默认值[0]<br> * 设置 */ public void setActive(Boolean active) { this.active = active; } /** * domain VARCHAR(50)<br> * 获得 */ public String getDomain() { return domain; } /** * domain VARCHAR(50)<br> * 设置 */ public void setDomain(String domain) { this.domain = domain == null ? null : domain.trim(); } /** * script VARCHAR(500)<br> * 获得 */ public String getScript() { return script; } /** * script VARCHAR(500)<br> * 设置 */ public void setScript(String script) { this.script = script == null ? null : script.trim(); } /** * stressstatus BIT 默认值[0]<br> * 获得 */ public Boolean getStressstatus() { return stressstatus; } /** * stressstatus BIT 默认值[0]<br> * 设置 */ public void setStressstatus(Boolean stressstatus) { this.stressstatus = stressstatus; } /** * uatstatus BIT 默认值[0]<br> * 获得 */ public Boolean getUatstatus() { return uatstatus; } /** * uatstatus BIT 默认值[0]<br> * 设置 */ public void setUatstatus(Boolean uatstatus) { this.uatstatus = uatstatus; } /** * checktype INTEGER(10) 默认值[1]<br> * 获得 */ public Integer getChecktype() { return checktype; } /** * checktype INTEGER(10) 默认值[1]<br> * 设置 */ public void setChecktype(Integer checktype) { this.checktype = checktype; } /** * checkvalue VARCHAR(200) 默认值[ok]<br> * 获得 */ public String getCheckvalue() { return checkvalue; } /** * checkvalue VARCHAR(200) 默认值[ok]<br> * 设置 */ public void setCheckvalue(String checkvalue) { this.checkvalue = checkvalue == null ? null : checkvalue.trim(); } /** * stressemailactive BIT 默认值[0]<br> * 获得 */ public Boolean getStressemailactive() { return stressemailactive; } /** * stressemailactive BIT 默认值[0]<br> * 设置 */ public void setStressemailactive(Boolean stressemailactive) { this.stressemailactive = stressemailactive; } /** * emails VARCHAR(500)<br> * 获得 */ public String getEmails() { return emails; } /** * emails VARCHAR(500)<br> * 设置 */ public void setEmails(String emails) { this.emails = emails == null ? null : emails.trim(); } /** * sitemailactive BIT<br> * 获得 */ public Boolean getSitemailactive() { return sitemailactive; } /** * sitemailactive BIT<br> * 设置 */ public void setSitemailactive(Boolean sitemailactive) { this.sitemailactive = sitemailactive; } /** * uatemailactive BIT 默认值[1]<br> * 获得 */ public Boolean getUatemailactive() { return uatemailactive; } /** * uatemailactive BIT 默认值[1]<br> * 设置 */ public void setUatemailactive(Boolean uatemailactive) { this.uatemailactive = uatemailactive; } /** * nodecol VARCHAR(45) 默认值[1]<br> * 获得 */ public String getNodecol() { return nodecol; } /** * nodecol VARCHAR(45) 默认值[1]<br> * 设置 */ public void setNodecol(String nodecol) { this.nodecol = nodecol == null ? null : nodecol.trim(); } /** * cron VARCHAR(100)<br> * 获得 */ public String getCron() { return cron; } /