spring-application.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
<import resource="spring-annotation-componentScan.xml" />
<import resource="spring-data.xml" />
<import resource="spring-mybatis.xml" />
<import resource="spring-transaction.xml" />
</beans>
spring-annotation-componentScan.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.demo"/>
</beans>
spring-data.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder ignore-unresolvable="true" location="jdbc.properties" />
<!-- 配置數(shù)據(jù)源 使用的是Druid數(shù)據(jù)源 -->
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="${jdbc.url}" />
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 初始化連接大小 -->
<property name="initialSize" value="${druid.initialSize}" />
<!-- 連接池大使用連接數(shù)量 -->
<property name="maxActive" value="${druid.maxActive}" />
<!-- 連接池最小空閑 -->
<property name="minIdle" value="${druid.minIdle}" />
<!-- 獲取連接大等待時(shí)間 -->
<property name="maxWait" value="${druid.maxWait}" />
<property name="poolPreparedStatements" value="${druid.poolPreparedStatements}" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="${druid.maxPoolPreparedStatementPerConnectionSize}" />
<!-- 用來(lái)檢測(cè)有效sql -->
<property name="validationQuery" value="${druid.validationQuery}" />
<property name="testOnBorrow" value="${druid.testOnBorrow}" />
<property name="testOnReturn" value="${druid.testOnReturn}" />
<property name="testWhileIdle" value="${druid.testWhileIdle}" />
<!-- 配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />
<!-- 配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />
<!-- 打開removeAbandoned功能 -->
<property name="removeAbandoned" value="${druid.removeAbandoned}" />
<!-- 1800秒,也就是30分鐘 -->
<property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}" />
<!-- 關(guān)閉abanded連接時(shí)輸出錯(cuò)誤日志 -->
<property name="logAbandoned" value="${druid.logAbandoned}" />
<!-- 監(jiān)控?cái)?shù)據(jù)庫(kù)
<property name="filters" value="${druid.filters}" />
-->
</bean>
</beans>
spring-mybatis.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 創(chuàng)建SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 數(shù)據(jù)源:必須屬性 -->
<property name="dataSource" ref="dataSource" />
<!-- 指定mybatis的 XML映射器文件地址 -->
<property name="mapperLocations" value="classpath*:mybatis/*.xml" />
<!-- 可在mybatis配置文件中設(shè)置 -->
<property name="configuration">
<bean class="org.apache.ibatis.session.Configuration">
<property name="mapUnderscoreToCamelCase" value="true"/>
</bean>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.demo.mapper" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
</beans>
spring-transaction.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 配置事務(wù)管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 注解方式配置事物 -->
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
測(cè)試
ClassPathXmlApplicationContext context11 = new ClassPathXmlApplicationContext("classpath:spring-application.xml");
UserMapper userMapper = context11.getBean(UserMapper.class);
User user = userMapper.getById(6498);
System.out.println("id = [" + user.getId() + "]");
System.out.println("name = [" + user.getName() + "]");
ApplicationConfig啟動(dòng)入口
@Configuration
@Import({DaoConfig.class, ComponentScanConfig.class})
public class ApplicationConfig {
}
ComponentScanConfig掃描注解bean
@Configuration
@ComponentScan(basePackages = {"com.demo.enity","com.demo.dao","com.demo.mapper","com.demo.service"})
public class ComponentScanConfig {
}
DaoConfig持久層配置
@Configuration
@Import({MybatisConfig.class, TransactionConfig.class})
public class DaoConfig {
}
MybatisConfig ORM配置
@Configuration
@Import(DruidPoolConfig.class)
public class MybatisConfig {
@Autowired
private DataSource dataSource;
@Bean("sqlSessionFactory")
public SqlSessionFactoryBean sqlSessionFactory() throws IOException {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setFailFast(true);
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/*.xml"));
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
sqlSessionFactoryBean.setConfiguration(configuration);
return sqlSessionFactoryBean;
}
@Bean
public static MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.demo.mapper");
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
return mapperScannerConfigurer;
}
}
注意:
MapperScannerConfigurer 實(shí)現(xiàn)了BeanDefinitionRegistryPostProcessor接口,因此該bean必須static修飾。否則啟動(dòng)加載的順序會(huì)出現(xiàn)錯(cuò)誤,如:DataSource 為null;
PathMatchingResourcePatternResolver此類可以通配符加載資源;
DruidPoolConfig連接池配置
@Configuration
@Import(DruidJdbcConfig.class)
public class DruidPoolConfig {
private final static Logger LOGGER = LoggerFactory.getLogger(DruidPoolConfig.class);
@Autowired
private DruidJdbcConfig druidJdbcConfig;
@Bean("dataSource")
public DataSource dataSource(){
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(druidJdbcConfig.getUrl());
datasource.setUsername(druidJdbcConfig.getUsername());
datasource.setPassword(druidJdbcConfig.getPassword());
datasource.setDriverClassName(druidJdbcConfig.getDriverClassName());
datasource.setInitialSize(druidJdbcConfig.getInitialSize());
datasource.setMinIdle(druidJdbcConfig.getMinIdle());
datasource.setMaxActive(druidJdbcConfig.getMaxActive());
datasource.setMaxWait(druidJdbcConfig.getMaxWait());
datasource.setTimeBetweenEvictionRunsMillis(druidJdbcConfig.getTimeBetweenEvictionRunsMillis());
datasource.setMinEvictableIdleTimeMillis(druidJdbcConfig.getMinEvictableIdleTimeMillis());
datasource.setValidationQuery(druidJdbcConfig.getValidationQuery());
datasource.setTestWhileIdle(druidJdbcConfig.isTestWhileIdle());
datasource.setTestOnBorrow(druidJdbcConfig.isTestOnBorrow());
datasource.setTestOnReturn(druidJdbcConfig.isTestOnReturn());
datasource.setRemoveAbandoned(druidJdbcConfig.isRemoveAbandoned());
datasource.setRemoveAbandonedTimeout(druidJdbcConfig.getRemoveAbandonedTimeout());
datasource.setLogAbandoned(druidJdbcConfig.isLogAbandoned());
try {
datasource.setFilters(druidJdbcConfig.getFilters());
} catch (SQLException e) {
LOGGER.error("datasource.setFilters occur error.", e);
}
return datasource;
}
}
DruidJdbcConfig數(shù)據(jù)庫(kù)連接配置
@Configuration
@PropertySource("classpath:jdbc.properties")
public class DruidJdbcConfig {
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${druid.initialSize}")
private int initialSize;
@Value("${druid.minIdle}")
private int minIdle;
@Value("${druid.maxActive}")
private int maxActive;
@Value("${druid.maxWait}")
private int maxWait;
@Value("${druid.timeBetweenEvictionRunsMillis}")
private int timeBetweenEvictionRunsMillis;
@Value("${druid.minEvictableIdleTimeMillis}")
private int minEvictableIdleTimeMillis;
@Value("${druid.validationQuery}")
private String validationQuery;
@Value("${druid.testWhileIdle}")
private boolean testWhileIdle;
@Value("${druid.testOnBorrow}")
private boolean testOnBorrow;
@Value("${druid.testOnReturn}")
private boolean testOnReturn;
@Value("${druid.removeAbandoned}")
private boolean removeAbandoned;
@Value("${druid.removeAbandonedTimeout}")
private int removeAbandonedTimeout;
@Value("${druid.logAbandoned}")
private boolean logAbandoned;
@Value("${druid.filters}")
private String filters;
@Value("${druid.logSlowSql}")
private boolean logSlowSql;
@Value("${druid.loginUsername}")
private String loginUsername;
@Value("${druid.loginPassword}")
private String loginPassword;
TransactionConfig事物配置
@Configuration
@Import(DruidPoolConfig.class)
@EnableTransactionManagement
public class TransactionConfig {
@Autowired
private DataSource dataSource;
@Bean("transactionManager")
public DataSourceTransactionManager transactionManager(){
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
dataSourceTransactionManager.setDataSource(dataSource);
return dataSourceTransactionManager;
}
}
注意:@EnableTransactionManagement注解管理事物,相當(dāng)于 <tx:annotation-driven transaction-manager="transactionManager" />
測(cè)試
AnnotationConfigApplicationContext context12 = new AnnotationConfigApplicationContext();
context12.register(ApplicationConfig.class);
context12.refresh();
UserService userService = context12.getBean(UserService.class);
User user = userService.save(6498);
System.out.println("id = [" + user.getId() + "]");
System.out.println("name = [" + user.getName() + "]");
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱:mybatis的xml配置和注解配置-創(chuàng)新互聯(lián)
鏈接地址:http://chinadenli.net/article38/psjsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、商城網(wǎng)站、網(wǎng)站建設(shè)、ChatGPT、網(wǎng)站設(shè)計(jì)公司、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容