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";
}
}