时间: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
- <span style="color: #008080">1</span> server.port=8089
- <span style="color: #008080">2</span> jdbc.driver=<span style="color: #000000">com.mysql.jdbc.Driver
- </span><span style="color: #008080">3</span> jdbc.url=jdbc:mysql:<span style="color: #008000">//</span><span style="color: #008000">localhost:3306/</span>
- <span style="color: #008080">4</span> jdbc.username=<span style="color: #000000">jack
- </span><span style="color: #008080">5</span> jdbc.password=123456
至此,我们的xml文件已经配置好了,我们可以写一个简单的控制器来测试下数据库是否已经连通
4.测试是否连通
- <span style="color: #008080">1</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">interface</span><span style="color: #000000"> FactoryService {
- </span><span style="color: #008080">2</span>
- <span style="color: #008080">3</span> <span style="color: #0000ff">public</span> List<FactoryEntity><span style="color: #000000"> findFactory();
- </span><span style="color: #008080">4</span>
- <span style="color: #008080">5</span> }
- <span style="color: #000000">@Service
- </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> FactoryServiceImpl <span style="color: #0000ff">implements</span><span style="color: #000000"> FactoryService{
- @Resource
- </span><span style="color: #0000ff">private</span><span style="color: #000000"> FactoryEntityMapper factoryMaaper;
- @Override
- </span><span style="color: #0000ff">public</span> List<FactoryEntity><span style="color: #000000"> findFactory() {
- FactoryEntityExample example</span>=<span style="color: #0000ff">new</span><span style="color: #000000"> FactoryEntityExample();
- Criteria createCriteria </span>=<span style="color: #000000"> example.createCriteria();
- List</span><FactoryEntity> selectByExample =<span style="color: #000000"> factoryMaaper.selectByExample(example);
- </span><span style="color: #0000ff">return</span><span style="color: #000000"> selectByExample;
- }
- }</span>
- <span style="color: #008080"> 1</span> <span style="color: #000000">@RestController
- </span><span style="color: #008080"> 2</span> @RequestMapping(value="front/factory"<span style="color: #000000">)
- </span><span style="color: #008080"> 3</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> FactoryController {
- </span><span style="color: #008080"> 4</span> <span style="color: #000000"> @Resource
- </span><span style="color: #008080"> 5</span> <span style="color: #0000ff">private</span><span style="color: #000000"> FactoryService factoryService;
- </span><span style="color: #008080"> 6</span>
- <span style="color: #008080"> 7</span> @RequestMapping(value="list"<span style="color: #000000">)
- </span><span style="color: #008080"> 8</span> <span style="color: #000000"> @ResponseBody
- </span><span style="color: #008080"> 9</span> <span style="color: #0000ff">public</span><span style="color: #000000"> ResponseVo queryAll(){
- </span><span style="color: #008080">10</span> ResponseVo responseVo=<span style="color: #0000ff">new</span><span style="color: #000000"> ResponseVo();
- </span><span style="color: #008080">11</span> List<FactoryEntity> factoryEntityList =<span style="color: #000000"> factoryService.findFactory();
- </span><span style="color: #008080">12</span> <span style="color: #000000"> responseVo.setData(factoryEntityList);
- </span><span style="color: #008080">13</span> <span style="color: #0000ff">return</span><span style="color: #000000"> responseVo;
- </span><span style="color: #008080">14</span>
- <span style="color: #008080">15</span> <span style="color: #000000"> }
- </span><span style="color: #008080">16</span>
- <span style="color: #008080">17</span>
- <span style="color: #008080">18</span> }
所以,我们猜一下,现在我请求下,数据会正常的返回么
我们现在请求下
http://localhost:8089/front/factory/list
返回的是
- <span style="color: #008080"> 1</span> Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.hxyz.media.mapper.FactoryEntityMapper] found <span style="color: #0000ff">for</span> dependency [com.hxyz.media.mapper.FactoryEntityMapper]: expected at least 1 bean which qualifies as autowire candidate <span style="color: #0000ff">for</span> <span style="color: #0000ff">this</span> dependency. Dependency annotations: {@javax.annotation.Resource(shareable=<span style="color: #0000ff">true</span>, lookup=, name=, description=, authenticationType=CONTAINER, type=<span style="color: #0000ff">class</span> java.lang.Object, mappedName=<span style="color: #000000">)}
- </span><span style="color: #008080"> 2</span> at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1406) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2<span style="color: #000000">.RELEASE]
- </span><span style="color: #008080"> 3</span> at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1057) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2<span style="color: #000000">.RELEASE]
- </span><span style="color: #008080"> 4</span> at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1019) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2<span style="color: #000000">.RELEASE]
- </span><span style="color: #008080"> 5</span> at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:518) ~[spring-context-4.3.2.RELEASE.jar:4.3.2<span style="color: #000000">.RELEASE]
- </span><span style="color: #008080"> 6</span> at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:496) ~[spring-context-4.3.2.RELEASE.jar:4.3.2<span style="color: #000000">.RELEASE]
- </span><span style="color: #008080"> 7</span> at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:627) ~[spring-context-4.3.2.RELEASE.jar:4.3.2<span style="color: #000000">.RELEASE]
- </span><span style="color: #008080"> 8</span> at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2<span style="color: #000000">.RELEASE]
- </span><span style="color: #008080"> 9</span> at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2<span style="color: #000000">.RELEASE]
- </span><span style="color: #008080">10</span> at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:318) ~[spring-context-4.3.2.RELEASE.jar:4.3.2<span style="color: #000000">.RELEASE]
- </span><span style="color: #008080">11</span> ... 34 common frames omitted
没有找到FactoryEntityMapper,但是我们明明是在xml中配置了mapperScannerConfigue
这是因为springboot在启动后并不会主动的去读取xml文件,只会根据类文件间的依赖去加载spring的bean类,所以springboot并没有发现xml中的配置
我们可以在启动类中添加
- @ImportResource(locations = "classpath*:/applicationContext.xml")
完整的启动类如下
- <span style="color: #008080">1</span> @ImportResource(locations = "classpath*:/applicationContext.xml"<span style="color: #000000">)
- </span><span style="color: #008080">2</span> <span style="color: #000000">@SpringBootApplication
- </span><span style="color: #008080">3</span> <span style="color: #008000">//</span><span style="color: #008000">@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class})</span>
- <span style="color: #008080">4</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> MediaApplication {
- </span><span style="color: #008080">5</span>
- <span style="color: #008080">6</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) {
- </span><span style="color: #008080">7</span> SpringApplication.run(MediaApplication.<span style="color: #0000ff">class</span><span style="color: #000000">, args);
- </span><span style="color: #008080">8</span> <span style="color: #000000"> }
- </span><span style="color: #008080">9</span> }
这时我们再启动就可以返回数据了
SpringBoot填坑系列---XML方式配置数据库
标签:tco default mysq rom sql jdb osi 连通 driver