mysql的mapper.xml文件中写增删改查的sql的时候,是怎么找到数据库的?里面也没写数据库地址和名称呀?
是在spring + mybtis 整合文件中配置 的
<!-- 加载配置属性文件 -->
<!--数据源配置-->
<bean id="dataSource0" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1"/>
<property name="minIdle" value="1"/>
<property name="maxActive" value="250"/>
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000"/>
<property name="validationQuery" value="${jdbc.validate}"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
<property name="poolPreparedStatements" value="true"/>
<property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
<property name="filters" value="stat,log4j,wall"/>
<property name="removeAbandoned" value="true"/>
<!-- 打开removeAbandoned功能 -->
<property name="removeAbandonedTimeout" value="1800"/>
<!-- 1800秒,也就是30分钟 -->
<property name="logAbandoned" value="true"/>
<!-- 关闭abanded连接时输出错误日志 -->
</bean>
<!-- mapper配置 -->
<!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据库连接池 -->
<property name="dataSource" ref="dataSource0" />
<property name="mapperLocations" value="classpath:/mappings/**/*.xml"/>
<!-- 加载mybatis的全局配置文件 -->
<property name="configLocation" value="classpath:mybatis.xml" />
<property name="typeAliasesPackage" value="com.kingsan"/>
<property name="typeAliasesSuperType" value="com.kingsan.base.common.parent.BaseEntity"/>
</bean>
数据源,你在启动的时候都会配置 DataSource的。
你想如果在mapping里面写数据库地址的话,那是不是都是数据库地址之类的东西了。。
可以看一下mybatis的官网介绍http://www.mybatis.org/mybatis-3/configuration.html#properties
spring-mybatis 的官方配置文档
http://www.mybatis.org/spring/getting-started.html
从配置文件中会读取相关数据库登陆信息
在spring和mybatis进行整合的时候,是由spring建立数据库连接。
例如在spring的配置文件applicationContext.xml中:
<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClassName}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
<!-- 连接池中保留的最大连接数。默认为15 -->
<property name="maxPoolSize" value="${c3p0.pool.maxPoolSize}"></property>
<!-- 连接池中保留的最小连接数。默认为15 -->
<property name="minPoolSize" value="${c3p0.pool.minPoolSize}"></property>
<!-- 初始化时创建的连接数,应在最大连接数与最小连接数 之间取值 -->
<property name="initialPoolSize" value="${c3p0.pool.initialPoolSize}"></property>
<!-- 定义从数据库获取新连接失败后重复尝试获取连接的次数,默认为30 -->
<property name="acquireIncrement" value="${c3p0.pool.acquireIncrement}"></property>
</bean>
<!-- 配置MyBatis相关信息 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据源 -->
<property name="dataSource" ref="c3p0DataSource"></property>
<!-- 加载mybatis配置文件 -->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>
<!-- 配置Mapper扫描 -->
<mybatis-spring:scan base-package="com.fruitsalesplatform.mapper"/>
<!-- 事务管理 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="c3p0DataSource"></property>
</bean>
<!-- 事务通知 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="find*" read-only="false"/>
<tx:method name="get*" read-only="false"/>
<tx:method name="view*" read-only="false"/>
</tx:attributes>
</tx:advice>
mapper是负责对应POJO和数据库中的映射的
而dataSource在其他xml里加载的,比如applicationContent.xml,自定义的xml