mybatis的xml配置和注解配置
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,xml配置spring-application.xml spring-annotation-c
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
眉山网络安全科技展
淮安综合软件开发优势
标准的数据库有哪些问题
燃气行业网络安全准入
一站式网络技术开发售后服务
加密服务器设置
贵州创新网络技术服务技巧
本地连接数据库已损坏
mysql恢复指定数据库
学习哪种网络技术
战地3为什么服务器没人
android提交数据给服务器
有5g数据库吗
双人成行上线不了EA服务器怎么办
软件开发团队标语
电脑网络显示无网络安全
微信群控服务器
前端直接连接sftp服务器
ps5账号无法连接到服务器
深圳市掌柜网络技术
海德威软件开发深圳上海分公司
微众银行网络技术笔试
谷歌 香港服务器
网络安全手抄小报五十字
检索效率低的数据库
农安智能网络技术咨询售后服务
甘肃曙光服务器维修费用云主机
服务器域名管理方法
网络安全防患
软件开发计划软件