mybatis的xml配置和注解配置
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,xml配置spring-application.xml spring-annotation-c
千家信息网最后更新 2025年02月03日mybatis的xml配置和注解配置
xml配置
spring-application.xml
spring-annotation-componentScan.xml
spring-data.xml
spring-mybatis.xml
spring-transaction.xml
测试
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启动入口
@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 实现了BeanDefinitionRegistryPostProcessor接口,因此该bean必须static修饰。否则启动加载的顺序会出现错误,如: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数据库连接配置
@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)@EnableTransactionManagementpublic class TransactionConfig { @Autowired private DataSource dataSource; @Bean("transactionManager") public DataSourceTransactionManager transactionManager(){ DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(); dataSourceTransactionManager.setDataSource(dataSource); return dataSourceTransactionManager; }}
注意:@EnableTransactionManagement注解管理事物,相当于
测试
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() + "]");
配置
注解
事物
数据
数据库
测试
入口
接口
资源
通配符
错误
顺序
监控
管理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
复旦数据库组
吴中区品牌网络技术有哪些
万网虚拟主机数据库
游戏服务器的开发与管理
vmware服务器管理
车载网络技术考试题库
数据库oracle的命名空间
西乙数据库
公用svn服务器
夏津中医院 网络安全
王牌战争早上也可以拆家的服务器
yii2 数据库缓存字段
数知科技互联网并购基金
网络诈骗算网络安全吗
联想服务器sr860管理口
渭南市二调数据库
我国网络安全面临的外部威胁
阿里云服务器空间不足
南京论之语网络技术怎么样
美国留学计算机网络技术
学网络安全需要了解什么
数知科技互联网并购基金
网络安全结课总结
如何确保党建网网络安全
江苏ktv服务器回收价格
莱芜仓库管理erp软件开发公司
工业控制网络技术第四章
化学虚拟仿真实验室软件开发
黄ba数据库
周村管理erp软件开发公司