mybatis的xml配置和注解配置
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,xml配置spring-application.xml spring-annotation-c
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
有格互联网科技
工业互联网科技新基建
盈实互联网科技
科技与互联网发展
互联网 的科技创新
互联网科技logo
安控科技rtu产品工业互联网
福州新华互联网科技学校 知乎
小米互联网科技园设置
银川新华互联网科技职业技术培训学校图片
南山科技园互联网公司有哪些
上海宁丞科技互联网
厦门千工互联网科技有限公司
元气玛特互联网科技公司是外包吗
中国互联网有什么科技
有人说阿里系是互联网科技企业
互联网公司属于科技吗
张家口科技产业互联网平台
陕西彩京云互联网科技有限公司
知域互联网科技有限公司官网
天津市摩尔互联网科技
广州万易互联网科技有限公司
安徽鑫晟辉互联网科技
西安互联网科技公司
深圳天众互联网科技公司
天速互联网络科技有限公司
互联网之后的科技是什么
浙江互联网科技研学营
众安科技工业互联网合作
山东蛋芒互联网科技有限公司