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数据

 

posted @ 2017-08-29 22:42  王久勇  阅读(757)  评论(0)    收藏  举报