在使用servlet时,要写接口和实现类,而且实现类的内容几乎都一样,那重复的部分通常就会被替代,甚至消失。通过springmvc配置文件后就只剩下一个接口类了。
application-context.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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<!-- 自动扫描类,并将其注册为spring的组件-->
<context:component-scan base-package="com.abc.carsys.service,com.abc.carsys.dao"></context:component-scan>
<!--1 引入属性文件,在配置中占位使用 -->
<context:property-placeholder location="classpath:database/db.properties"/>
<!--2 配置C3P0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<!--驱动类名 -->
<property name="driverClass" value="${mysql.driver}"/>
<!-- url -->
<property name="jdbcUrl" value="${mysql.url}" />
<!-- 用户名 -->
<property name="user" value="${mysql.username}" />
<!-- 密码 -->
<property name="password" value="${mysql.password}" />
<!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数 -->
<property name="acquireIncrement" value="5"></property>
<!-- 初始连接池大小 -->
<property name="initialPoolSize" value="10"></property>
<!-- 连接池中连接最小个数 -->
<property name="minPoolSize" value="5"></property>
<!-- 连接池中连接最大个数 -->
<property name="maxPoolSize" value="20"></property>
</bean>
<!--3 sessionFatory的配置-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 找到实体类-->
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.abc.carsys.domain"/>
<property name="configuration">
<!-- 下划线转驼峰-->
<bean class="org.apache.ibatis.session.Configuration">
<property name="mapUnderscoreToCamelCase" value="true"/>
</bean>
</property>
<!-- sql映射文件路径 -->
<property name="mapperLocations"
value="classpath*:mybatis/mapper/PersonMapper.xml"></property>
</bean>
<!-- 自动扫描接口类,如果发现接口的名字和和某个mapper的namespace一致,那么就指导生成这个接口的实现,然后注入spring容器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--指定会话工厂,如果当前上下文中只定义了一个则该属性可省去 -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<!-- 指定要自动扫描接口的基础包,实现接口 -->
<property name="basePackage" value="com.abc.carsys.dao"></property>
</bean>
<!-- 注册事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 开启事务注解驱动 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
Dao
package com.abc.carsys.dao;
import com.abc.carsys.domain.Person;
import java.util.List;
import java.util.Map;
public interface PersonDao {
void addPerson(Person person);
List<Person> loadPerson();
Map getPersonPic(String idcard);
Person getPersonById(String idcard);
void updatePerson(Person person);
void delPerson(String idcard);
}
Mapper.xml