时间:2021-07-01 10:21:17 帮助过:3人阅读
2.通过MyBatis-generate自动生成实体类和mapper
3.配置XML文件
在resource下面新建applicationContext.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:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"> <!-- Connection Info --> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- Connection Pooling Info --> <property name="maxActive" value="10" /> <property name="maxIdle" value="50" /> <property name="minIdle" value="0" /> <property name="defaultAutoCommit" value="false" /> </bean> <!-- MyBatis配置 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 --> <property name="typeAliasesPackage" value="com.hxyz.media.entity" /> <!-- 显式指定Mapper文件位置 --> <property name="mapperLocations" value="classpath:/mapper/*Mapper.xml" /> </bean> <!-- 扫描basePackage下所有以@MyBatisRepository标识的 接口--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.hxyz.media.mapper" /> </bean> </beans>
在resource路径下新建application.properties
1 server.port=8089 2 jdbc.driver=com.mysql.jdbc.Driver 3 jdbc.url=jdbc:mysql://localhost:3306/ 4 jdbc.username=jack 5 jdbc.password=123456
至此,我们的xml文件已经配置好了,我们可以写一个简单的控制器来测试下数据库是否已经连通
4.测试是否连通
1 public interface FactoryService { 2 3 public List<FactoryEntity> findFactory(); 4 5 }
@Service public class FactoryServiceImpl implements FactoryService{ @Resource private FactoryEntityMapper factoryMaaper; @Override public List<FactoryEntity> findFactory() { FactoryEntityExample example=new FactoryEntityExample(); Criteria createCriteria = example.createCriteria(); List<FactoryEntity> selectByExample = factoryMaaper.selectByExample(example); return selectByExample; } }
1 @RestController 2 @RequestMapping(value="front/factory") 3 public class FactoryController { 4 @Resource 5 private FactoryService factoryService; 6 7 @RequestMapping(value="list") 8 @ResponseBody 9 public ResponseVo queryAll(){ 10 ResponseVo responseVo=new ResponseVo(); 11 List<FactoryEntity> factoryEntityList = factoryService.findFactory(); 12 responseVo.setData(factoryEntityList); 13 return responseVo; 14 15 } 16 17 18 }
所以,我们猜一下,现在我请求下,数据会正常的返回么
我们现在请求下
http://localhost:8089/front/factory/list
返回的是
1 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.hxyz.media.mapper.FactoryEntityMapper] found for dependency [com.hxyz.media.mapper.FactoryEntityMapper]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)} 2 at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1406) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 3 at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1057) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 4 at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1019) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 5 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:518) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE] 6 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:496) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE] 7 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:627) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE] 8 at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 9 at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE] 10 at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:318) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE] 11 ... 34 common frames omitted
没有找到FactoryEntityMapper,但是我们明明是在xml中配置了mapperScannerConfigue
这是因为springboot在启动后并不会主动的去读取xml文件,只会根据类文件间的依赖去加载spring的bean类,所以springboot并没有发现xml中的配置
我们可以在启动类中添加
@ImportResource(locations = "classpath*:/applicationContext.xml")
完整的启动类如下
1 @ImportResource(locations = "classpath*:/applicationContext.xml") 2 @SpringBootApplication 3 //@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class}) 4 public class MediaApplication { 5 6 public static void main(String[] args) { 7 SpringApplication.run(MediaApplication.class, args); 8 } 9 }
这时我们再启动就可以返回数据了
SpringBoot填坑系列---XML方式配置数据库
标签:tco default mysq rom sql jdb osi 连通 driver