运维开发网

mybatis spring 全注解配置

运维开发网 https://www.qedev.com 2020-02-18 14:24 出处:网络 作者:兜里有佩
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;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
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";
    }

}
0

精彩评论

暂无评论...
验证码 换一张
取 消