mybatis spring 全注解配置

pom引入jar包

        <!-- mybatis jar start -->
        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <!-- mybatis/spring包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>

spring配置

    <!--导入外部配置文件  -->
    <context:property-placeholder location="classpath:jdbc.properties"
        ignore-unresolvable="true"/>

    <!-- 使用annotation 自动注册bean, 并保证@Required、@Autowired的属性被注入 -->
    <!-- spring注解扫描包 -->
    <context:component-scan base-package="com.services" >
       <context:exclude-filter type="annotation"
            expression="org.springframework.stereotype.Controller" />
    </context:component-scan>

    <!-- 数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${jdbc.mysql.driverClassName}" />
        <property name="url" value="${jdbc.mysql.url}" />
        <property name="username" value="${jdbc.mysql.username}" />
        <property name="password" value="${jdbc.mysql.password}" />
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="${initialSize}"></property>
        <!-- 连接池最大数量 -->
        <property name="maxActive" value="${maxActive}"></property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="${maxIdle}"></property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="${minIdle}"></property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="${maxWait}"></property>
        <!-- 禁止默认自动提交 -->
        <property name="defaultAutoCommit">
            <value>false</value>
        </property>
        <!-- 开启测试连接 -->
        <property name="testWhileIdle">
                <value>true</value>
        </property>
        <property name="testOnBorrow">
                <value>true</value>
        </property>
        <property name="validationQuery">
                   <value>select 1 from dual</value>
        </property>
        <property name="timeBetweenEvictionRunsMillis">
                   <value>300000</value>
        </property>
        <property name="numTestsPerEvictionRun">
                   <value>3</value>
        </property>
        <property name="minEvictableIdleTimeMillis">
                   <value>600000</value>
        </property>
    </bean>

    <!-- spring和MyBatis整合 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- mybatis-config.xml -->
        <property name="configLocation" value="classpath:spring/mybatis-config.xml"/>
    </bean>

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.daos" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 注解事务扫描 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

jdbc.properties 数据库配置文件

###mysql表
jdbc.mysql.driverClassName=com.mysql.jdbc.Driver
#[ 测试用 ]
jdbc.mysql.url=jdbc:mysql://10.143.131.52:3306/test
jdbc.mysql.username=test
jdbc.mysql.password=test

#初始化连接大小
initialSize=3
#连接池最大数量
maxActive=50
#连接池最大空闲
maxIdle=10
#连接池最小空闲
minIdle=0
#获取连接最大等待时间
maxWait=-1

使用方法

例:查询

实体类

package com.dto;

public class TestDTO {

    private String id;
    private String name;
    private int age;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

}

DAO层

package com.daos;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.dto.TestDTO;

@Mapper
public interface TestDAO {

    @Select("<script> " +
            "select " +
            "t.ID  as id " +
            ",t.NAME  as name " +
            ",t.AGE as age " +

            "from " +
            "${tablename} t " +
            "where " +
            "t.age in " +
            "<foreach item=‘item‘ index=‘index‘ collection=‘ages‘ open=‘(‘ separator=‘,‘ close=‘)‘> " +
            "#{item} " +
            "</foreach> " +
            "</script> "
            )
    List<TestDTO> list(@Param("tablename")String tablename, @Param("ages")List<int> ages);
}

service层接口

package com.services;

import java.util.List;

import com.dto.TestDTO;

public interface TestService {

    /**
     * 信息
     * @param
     */
    public List<TestDTO> list(String tablename, List<int> ages);

}

service层实现

package com.services.impl;

import java.util.List;

import com.daos.TestDAO;
import com.dto.TestDTO;
import com.services.TestService;

@Service
public class TestService implements TestService{

    @Autowired
    private TestDAO testDAO;

    /**
     * 信息
     * @param
     */
    public List<TestDTO> list(String tablename, List<int> ages){
      try {
            return testDAO.list(tablename, ages);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new ArrayList<TestDTO>();
    }

}

controller层

package com.web;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.daos.TestDAO;
import com.dto.TestDTO;
import com.services.TestService;

/**
 * @功能 处理相关请求
 * @author zjw
 *
 */
@Controller
@RequestMapping("/test")
public class TestController extends BaseController {
    private static final Logger log = LoggerFactory
            .getLogger(TestController.class);

    @Autowired
    private TestService testServiceImpl;

    /************************************* 任务管理 **********************************/
    /**
     * @functional 页面跳转
     * @param model
     * @param request
     * @param response
     * @return
     * @throws Exception
     */
    @RequestMapping("/test.do")
    public String test(Model model, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        List<int> ageList = new ArrayList<>();
        mobileList.add(80);
        List<TestDTO> tests = testServiceImpl.list("t_test", ageList);
        System.out.println("tests:"+tests+":"+tests.size());
        return "/view/test/listTest";
    }

}

原文地址:http://blog.51cto.com/jtech/2338035

时间: 2024-10-03 08:22:33

mybatis spring 全注解配置的相关文章

基于maven的SpringMVC,Spring,MyBatis的全注解配置

首先创建maven项目 1.maven添加各种依赖包 <!-- 数据库连接池 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <!-- Mybatis与Spring的包 --> <dependency>

基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录

原文 基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录 首先说说 IDEA 12,由于myeclipse越来越卡,我改用idea12 了,发现其功能强悍到eclipse无法比拟,此款ide理解上下文是一等一的,不用什么jquery插件,extjs插件,都可以实现全智能的代码提示.速度什么的都比myeclipse快.而且IDEA提供了android支持struts spring hibernate 支持.下面,我讲教大家完成一个基于全注解的Spirn

Spring AOP 注解配置实例

Spring AOP注解例子 一:导入相关jar包. 首先导入Spring的相关包(这里就不多说了,我这里是3.2.4版本的) 然后导入AOP注解的相关包(不是spring的包)aspectjrt-1.6.7.jar和aspectjweaver-1.6.8.jar和aopalliance.jar (注意这里最好是1.6.7以上的版本,不然容易出错,折腾了我好久,最后才发现是包的版本问题. 所以这里一定要注意,spring 2.0以后的最好是用1.6.7的版本) 二: 建一个class类作为切入面

Spring MVC注解配置结合Hibernate的入门教程及其代码实例

原文:Spring MVC注解配置结合Hibernate的入门教程及其代码实例 源代码下载地址:http://www.zuidaima.com/share/1787210045197312.htm 1.概述 本文旨在搭建Spring MVC+Hibernate开发框架,通过一个简单的demo讲解Spring MVC的相关配置文件,以及通过注解方式实现简单功能. 开发框架:Spring+Spring MVC+Hibernate(Spring所用的版本为3.0.5). 数据库:MySQL(数据库名称

SpringMVC + myBatis + mySQL 全注解 事务配置

项目中使用SpringMVC+myBatis + mySQL  开发 ,需要事务管理功能 , 配置如下 1.service.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-i

Spring MVC全注解配置 - 无web.xml

Serlvet 3以后,我们可以使用注解来配置Servlet,对于像Spring这类的框架来说是一个很好的适应.Spring也对此特性加入了很多的新功能.本文就将简单的对之前的xml配置转换为java代码的配置.代码配置让程序员们觉得更加具有流程化,不像配置很多代码程序员们都不愿意look into. 接下来,进行替换我们之前的web.xml和spring-mvc.xml的配置.也就是在你的web工程里面看不到这两个配置文件了.(可能有的童鞋会说,这样配置可能对以后的修改不方便,无法达到只修改配

优雅的ssm三大框架整合(全注解配置篇)转载

一.web应用环境 1.ServletContext 对于一个web应用,其部署在web容器(比如:tomcat)中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,它由web容器负责初始化,其为后面的spring容器提供宿主环境. ServletContext是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放.ServletContext提供对应用程序中所有Servlet所共有的各种资源和功能的访问.Servlet上下文API用于设置应用程

Spring实践第六天(Spring全注解的方式)

说明 如图,项目目录: 注解的方式: 1.目标:省略掉在xml中配置bean! 2.方式: 先在主配置文件,告知要开启注解模式:<context:annotation-config/> 在相关的类的方法上加注解 一.在xml文档中加入<context:component-scan base-package="com.nenu"/> 如果要使用注解,首先要在xml文件中配置注解模式(使项目允许使用注解): 在applicationContext加入<cont

关于spring中注解配置的问题

今天写spring的时候,想用注解配置,但不巧的是用Junit工具测试的时候出错了,检查了很久的代码,发现并不是代码的问题,那就有些奇怪了. 后来去百度,回答的奇奇怪怪,和我的问题沾边的不多,最后还是FQ找到的答案,废话不多说,先贴出错误提示: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resou