使用IDEA构建 spring +mybatis+db2 基于xml 配置 非maven

一、jar包的导入

mybatis 需要的jar包:

mybatis-3.1.1.jar

mybatis-spring-1.3.1.jar

db2需要的jar包:

db2jcc.jar

配置dataSource所需要的jar包:

commons-dbcp-1.2.1.jar

commons-pool-1.6.jar

spring各种jar:

如果不使用aop编程aspectj的包不需要引入


二、web.xml的配置

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>


<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/applicationContext*.xml</param-value>
</context-param>

上面是完成spring 的 简单配置。

由于我个人有强迫症,不喜欢把所有定义的bean 放在同一个xml中 所以引入了多个 aoolicationContext

三、配置mybatis

#驱动名称
jdbc.driver=com.ibm.db2.jcc.DB2Driver
#访问的url
jdbc.url=jdbc:db2://ip:端口号/库名
jdbc.type=javax.sql.DataSource
#初始化连接池大小
jdbc.initialSize=10
#连接池最大数量
jdbc.maxActive=200
#连接池最大空闲
jdbc.maxIdle=100
#连接池最小空闲
jdbc.minIdle=10
#连接池最大等待事件
jdbc.maxWait=5000
jdbc.username=用户名
jdbc.password=密码
上面这些需要放在 properties下

<!-- 引入配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:spring/properties/jdbc.properties"/>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    <!-- 初始化连接大小 -->
    <property name="initialSize" value="${jdbc.initialSize}"/>
    <!-- 连接池最大数量 -->
    <property name="maxActive" value="${jdbc.maxActive}"/>
    <!-- 连接池最大空闲 -->
    <property name="maxIdle" value="${jdbc.maxIdle}"/>
    <!-- 连接池最小空闲 -->
    <property name="minIdle" value="${jdbc.minIdle}"/>
    <!-- 获取连接最大等待时间 -->
    <property name="maxWait" value="${jdbc.maxWait}"/>
</bean>


<!--基于注解的事务管理-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>


<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!--引入dataSource-->
    <property name="dataSource" ref="dataSource"/>
    <!--引入mybatis配置文件-->
    <property name="configLocation" value="classpath:spring/mybatis-config.xml"/>
    <!--下面这句话可以使用可以不使用。如果不使用  默认的xml 寻找模式为对应的接口目录下。即接口和xml必须名称统一,且在同一目录
    此文采用是单独放置其他位置则实现如下配置即可-->
    <property name="mapperLocations" value="classpath:self/yzx/xml/*.xml"/>
</bean>

<!-- 扫描mybatis映射接口类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="self"/>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

四、配置mybatis-cofig

<settings>
   <setting name="cacheEnabled" value="false"/>
</settings>


五、测试

创建接口

public interface svlt02 {

  
    public List<Map<String, Object>> getLog(String msg_ids);

}
创建xml文件

<!--namespace 命名规则为对应的接口名称否则会找不到对应的方法-->
<mapper namespace="self.yzx.itface.svlt02">

    <select id="getLog" resultType="java.util.Map" parameterType="String">
      SELECT * FROM TEST_TABLE WHERE MSG_IDS = ${_parameter}
   </select>


</mapper>

由于我这里传入的是String 类型。所以在 parameterType类型写String。。在 sql中  使用 _parameter 获得传入参数

也可以在接口中  使用 getLog(@param("sp") String msg_ids)  则sql 写 ${sp}

不需要写任何实现类。。


我本地测试是 写个servlet 。。在 servlet 中添加注解。。

调用。

package yzx.sv.lt;

import org.springframework.beans.factory.annotation.Autowired;
import self.yzx.impl.Svlt02Services;
import yzx.sv.lt.BaseServelt.BaseServlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

public class servletSVLT02 extends BaseServlet {


    @Autowired
    private Svlt02Services svlt02Services;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Map<String, Object>> queryList = svlt02Services.queryList("1");
        System.out.println("svlt02");
    }
}


package self.yzx.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import self.yzx.itface.svlt02;

import java.util.List;
import java.util.Map;

@Service
public class Svlt02Services {

    @Autowired
    private svlt02 svlt02;

    public List<Map<String, Object>> queryList(String msg_ids) {
        List<Map<String,Object>> list =svlt02.getLog(msg_ids);
        return list;
    }
}



六、总结

按照以上步骤 可以完成mybatis 的 配置 及使用。。

使用idea 会报 no bean name is 这个 不用管。。

如果发现@autowired  为null 是因为 servlet 初始化的时候 没有 完成bean 的装配。。

我这里 采用 所有servlet 继承 BaseServlet 。。。servlet 初始化的时候完成 自动装配。这样 你就不会获取到为空了。

public class BaseServlet extends HttpServlet {

    public void init() throws ServletException {
        super.init();
        WebApplicationContextUtils.getWebApplicationContext(getServletContext()).getAutowireCapableBeanFactory().autowireBean(this);

        /*Sings signs = (Sings) ContextLoader.getCurrentWebApplicationContext().getBean("sings");*/
    }

}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值