在resources目录下新增jdbc.properties文件 该文件用来写有关数据库链接的信息
#jdbc jdbc_driverClassName=com.mysql.jdbc.Driver jdbc_url=jdbc:mysql://localhost:3306/shortterm?characterEncoding=utf-8 jdbc_username=root jdbc_password=123 validationQuery=SELECT 1删除applicationContext.xml 和mybatis-config.xml文件,增加spring-mybatis.xml文件 实际上就是把mybatis里的配置放到了spring的配置中 看看spring-mybatis.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/> <context:component-scan base-package="service,servlet" /> <!-- 配置数据源--> <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url}"/> <property name="username" value="${jdbc_username}"/> <property name="password" value="${jdbc_password}"/> <!--连接池大小--> <property name="initialSize" value="0"/> <!--连接池最大使用连接数--> <property name="maxActive" value="20"/> <!--连接池最小空闲--> <property name="minIdle" value="0"/> <!--连接池最大等待时间--> <property name="maxWait" value="60000"/> <property name="validationQuery" value="${validationQuery}" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <property name="testWhileIdle" value="true" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="25200000" /> <!-- 打开removeAbandoned功能 --> <property name="removeAbandoned" value="true" /> <!-- 1800秒,也就是30分钟 --> <property name="removeAbandonedTimeout" value="1800" /> <!-- 关闭abanded连接时输出错误日志 --> <property name="logAbandoned" value="true" /> <!-- 监控数据库 --> <!-- <property name="filters" value="stat" /> --> <property name="filters" value="mergeStat" /> </bean> <!-- 配置sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> </bean> <!--配置mapper--> <bean id="adminMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="mapper.AdminMapper"/> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> </beans>数据库连接池用的是阿里的Druid,Maven配置里有依赖包 ${jdbc_url}引用了之前写好的jdbc.properties文件 对SqlSessionFactoryBean和MapperFactoryBean进行注入 MapperFactoryBean会给出一个借口的实现类(动态代理) 但这样配置需要对每一个mapper配置所以我们可以用MapperScannerConfigurer
<!--配置mapper--> <!-- <bean id="adminMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">--> <!-- <property name="mapperInterface" value="mapper.AdminMapper"/>--> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory"/>--> <!-- </bean>--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="mapper"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean>< property name=“basePackage” value=“mapper”/>扫描的包 他会自动扫描包下面的mapper接口
看看AdminMapper
public interface AdminMapper { @Select("select * from admin where name=#{name}") public Admin getByName(String name); @Insert("insert into admin values(null,#{name},#{password}") public void insert(Admin admin); @Delete("delete from admin where id=#{id}") public void delete(Integer id); @Update("update admin set name=#{name},password=#{password} where id=#{id}") public void update(Admin admin); }你可以使用注解或者xml方式注入对象(看看Spring就知道怎么写了) 这里用注解方式
@Service public class AdminServiceImp{ private AdminMapper adminMapper; @Autowired public void setAdminMapper(AdminMapper adminMapper) { this.adminMapper = adminMapper; } public void add(Admin a) { adminMapper.insert(a); } public void delete(Integer id) { adminMapper.delete(id); } public void update(Admin a){ adminMapper.update(a); } public Admin getByName(String name){ System.out.println("come"); System.out.println(adminMapper); Admin admin=adminMapper.getByName(name); return admin; } }