spring Boot 分享(3)--tk.mybatis的使用
tkmybatis是在mybatis框架的基础上提供了很多工具,让开发更加高效,tkmybatis提供了较多的默认操作函数,
示例代码路径:https://github.com/wangjiuong/SpringBoot/tree/master/SpringBootTkBatis
maven增加配置如下:
<dependencies> <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.2.2</version> </dependency> <dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.7</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>3.7.1</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <!-- <version>1.5.4.RELEASE</version>--> </dependency> </dependencies>
spring-datasource.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:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=UTC"/> <property name="username" value="root"/> <!-- property池启动时的初始值 --> <property name="password" value="test"/> <!-- 连接name="initialSize" value="${initialSize}"/>--> <property name="initialSize" value="1"/> <!-- 连接池的最大值 --> <property name="maxActive" value="500"/> <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 --> <property name="maxIdle" value="2"/> <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 --> <property name="minIdle" value="1"/> </bean> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <tx:annotation-driven transaction-manager="txManager"/> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:./config/mybatis-config.xml"></property> <property name="mapperLocations" value="classpath*:./config/*mapper.xml"></property> </bean> <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> <property name="basePackage" value="com.nuaa.mapper" /> <property name="properties"> <value> mappers=tk.mybatis.mapper.common.Mapper </value> </property> </bean> </beans>
’定义表对应的bean如下:
package com.nuaa.entity; import javax.persistence.Column; import javax.persistence.Table; /** * Created by wangjiuyong on 2017/8/29. */ @Table(name = "t_user") public class User { public int id; @Column(name = "name") public String name; }
User对应的Mapper如下:
package com.nuaa.mapper; import com.nuaa.entity.User; import org.springframework.stereotype.Repository; import tk.mybatis.mapper.common.Mapper; /** * Created by wangjiuyong on 2017/8/29. */ @Repository public interface UserMapper extends Mapper<User> { }
在controller中使用
package com.nuaa; import com.nuaa.entity.User; import com.nuaa.mapper.UserMapper; import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.List; /** * Created by wangjiuyong on 2017/8/22. */ @Controller @EnableAutoConfiguration @SpringBootConfiguration @ComponentScan(basePackages="com.nuaa") @ImportResource(locations={"classpath:spring-*.xml"}) public class SampleController { @Resource UserMapper userMapper; @RequestMapping("/") @ResponseBody String home() { List<User> ListUser = userMapper.selectAll(); System.out.println(ListUser); return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(SampleController.class, args); } }
编译后运行,就可以看到userMapper从数据库中获取了所有的user数据