springboot-26-整合mybatis,druid连接池

sprinboot整合mybatis, 有2种方式, 第一种完全使用注解的方式, 还有一种就是使用xml文件的方式

项目使用gradle + idea, 数据源使用druid, 多使用groovy编写

环境配置

1, 依赖

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
    compile("org.springframework.boot:spring-boot-starter")
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-log4j2")
    compile("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")
    compile("org.codehaus.groovy:groovy-all:2.4.11")

    compile ‘mysql:mysql-connector-java‘
    compile ‘com.alibaba:druid-spring-boot-starter:1.1.2‘
    compile ‘org.mybatis.spring.boot:mybatis-spring-boot-starter:1.1.1‘

    compile ‘javax.inject:javax.inject:1‘

    testCompile group: ‘junit‘, name: ‘junit‘, version: ‘4.12‘
    testCompile("org.springframework.boot:spring-boot-starter-test")

}

2, user-schame.sql

在springboot的配置文件中, 增加 schema, 可以在程序启动时创建数据表, 插入数据等操作

SET FOREIGN_KEY_CHECKS=0;

DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘主键id‘,
  `userName` varchar(32) DEFAULT NULL COMMENT ‘用户名‘,
  `passWord` varchar(32) DEFAULT NULL COMMENT ‘密码‘,
  `user_sex` varchar(32) DEFAULT NULL,
  `nick_name` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;

3, application.yml

spring:
  profiles:
    active: dev

  http:
        encoding:
          charset: UTF-8
          force: true
          enabled: true

server:
  tomcat:
    uri-encoding: UTF-8

---
# 开发环境
spring:
  profiles: dev
  datasource:
    url: jdbc:mysql://localhost:3306/springboot
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
#    schema: classpath:user-schema.sql
#    data: classpath:user-data.sql

server:
  context-path: /security
  port: 8010

---
# 测试环境配置
spring:
  profiles: qa

---
# 生产环境配置
spring:
  profiles: prod

4, Main.groovy

package com.wenbronk.security

import org.mybatis.spring.annotation.MapperScan
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
/**
 * Created by wenbronk on 2017/8/14.
 */
@SpringBootApplication
@MapperScan("com.wenbronk.security.mapper")
class SecurityApplication {
    static void main(String[] args) {
        SpringApplication.run(SecurityApplication.class)
    }
}

5, UserEntity.groovy

package com.wenbronk.security.entity
/**
 * Created by wenbronk on 2017/8/14.
 */
class UserEntity {
    def id
    def userName
    def passWord
    def userSex
    def nickName

    @Override
    public String toString() {
        return "UserEntity{" +
                "id=" + id +
                ", userName=" + userName +
                ", passWord=" + passWord +
                ", userSex=" + userSex +
                ", nickName=" + nickName +
                ‘}‘;
    }
}

6, UserSexEnum

package com.wenbronk.security.enums;

/**
 * Created by wenbronk on 2017/8/14.
 */
public enum UserSexEnum {
    MAN,
    WOMAN
}

完全使用注解的方式:

1, usermapper

package com.wenbronk.security.mapper;

import com.wenbronk.security.entity.UserEntity;
import com.wenbronk.security.enums.UserSexEnum;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * Created by wenbronk on 2017/8/14.
 */
public interface UserMapper {

    @Select("SELECT * FROM users")
    @Results({
            @Result(property = "userSex",  column = "user_sex", javaType = UserSexEnum.class),
            @Result(property = "nickName", column = "nick_name")
    })
    List<UserEntity> findAll();

    @Select("SELECT * FROM users WHERE id = #{id}")
    @Results({
            @Result(property = "userSex",  column = "user_sex", javaType = UserSexEnum.class),
            @Result(property = "nickName", column = "nick_name")
    })
    UserEntity findOne(Long id);

    @Insert("INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex})")
    void insert(UserEntity user);

    @Update("UPDATE users SET userName=#{userName},nick_name=#{nickName} WHERE id =#{id}")
    void update(UserEntity user);

    @Delete("DELETE FROM users WHERE id =#{id}")
    void delete(Long id);

}

2, 测试类

package com.wenbronk.security.test

import com.wenbronk.security.entity.UserEntity
import com.wenbronk.security.enums.UserSexEnum
import com.wenbronk.security.mapper.UserMapper
import org.junit.Test
import org.junit.runner.RunWith
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner

import javax.inject.Inject
/**
 * Created by wenbronk on 2017/8/14.
 */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
class MybatisTest {

    @Inject
    UserMapper userMapper;

    @Test
    void insert() {
        userMapper.insert(new UserEntity(userName: ‘vini‘, passWord: ‘123‘, userSex: UserSexEnum.WOMAN, nickName: ‘H‘))
        userMapper.insert(new UserEntity(userName: ‘bronk‘, passWord: ‘123‘, userSex: UserSexEnum.MAN, nickName: ‘H‘))
    }

    @Test
    void query() {
        def find = userMapper.findAll()
        println find
    }

}

更多注解请移步: http://www.mybatis.org/mybatis-3/zh/java-api.html

使用xml的方式

1, application.yml中添加

mybatis.config-locations=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

2, mybatis-config.xml

<configuration>
    <typeAliases>
        <typeAlias alias="Integer" type="java.lang.Integer" />
        <typeAlias alias="Long" type="java.lang.Long" />
        <typeAlias alias="HashMap" type="java.util.HashMap" />
        <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
        <typeAlias alias="ArrayList" type="java.util.ArrayList" />
        <typeAlias alias="LinkedList" type="java.util.LinkedList" />
    </typeAliases>
</configuration>

3, user的映射文件

<mapper namespace="com.neo.mapper.UserMapper" >
    <resultMap id="BaseResultMap" type="com.neo.entity.UserEntity" >
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="userName" property="userName" jdbcType="VARCHAR" />
        <result column="passWord" property="passWord" jdbcType="VARCHAR" />
        <result column="user_sex" property="userSex" javaType="com.neo.enums.UserSexEnum"/>
        <result column="nick_name" property="nickName" jdbcType="VARCHAR" />
    </resultMap>

    <sql id="Base_Column_List" >
        id, userName, passWord, user_sex, nick_name
    </sql>

    <select id="getAll" resultMap="BaseResultMap"  >
       SELECT
       <include refid="Base_Column_List" />
       FROM users
    </select>

    <select id="getOne" parameterType="java.lang.Long" resultMap="BaseResultMap" >
        SELECT
       <include refid="Base_Column_List" />
       FROM users
       WHERE id = #{id}
    </select>

    <insert id="insert" parameterType="com.neo.entity.UserEntity" >
       INSERT INTO
            users
            (userName,passWord,user_sex)
        VALUES
            (#{userName}, #{passWord}, #{userSex})
    </insert>

    <update id="update" parameterType="com.neo.entity.UserEntity" >
       UPDATE
            users
       SET
        <if test="userName != null">userName = #{userName},</if>
        <if test="passWord != null">passWord = #{passWord},</if>
        nick_name = #{nickName}
       WHERE
            id = #{id}
    </update>

    <delete id="delete" parameterType="java.lang.Long" >
       DELETE FROM
             users
       WHERE
             id =#{id}
    </delete>
</mapper>

4, dao代码

public interface UserMapper {

    List<UserEntity> getAll();

    UserEntity getOne(Long id);

    void insert(UserEntity user);

    void update(UserEntity user);

    void delete(Long id);

}

代码地址: https://github.com/wenbronk/springboot-test/tree/master/security-mybatis/src

原博客地址: http://blog.csdn.net/gebitan505/article/details/54929287

时间: 2024-10-25 13:22:50

springboot-26-整合mybatis,druid连接池的相关文章

mybatis+Druid连接池的问题

首先让我来描述问题 我有个系统是基于springmvc+mybatis+mysql+druid的,启动系统刚开始用没有问题,但是用着用着系统表象就是卡死 分析: 1:通过表象是不是有可能数据库锁表了,通过jvm的jstack -l pid(进程id) 如何得到进程id呢?--到jdk安装的bin目录执行 jps命令得到pid 打印出堆栈信息 此时没办法只能看druid的源码找到 此时要引起注意,看源码的时候一点要注意if条件的地方,此时我考虑是不是maxWait没有配置默认为0,此时我到自己的配

SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置

一直对springmvc和mybatis挺怀念的,最近想自己再搭建下框架,然后写点什么. 暂时没有整合缓存,druid也没有做ip地址的过滤.Spring的AOP简单配置了下,也还没具体弄,不知道能不能用,log也不知道能不能用,`(*∩_∩*)′哈哈,有点不负责任...... 直接上代码: 使用的eclipse和eclipse自带的maven,参考了网上的资料,有些代码是拷贝的,不过都自己测试过了.嗯,可以跑起来... 先上项目结构: 新建maven项目,选择web,然后配置pom: <pro

springboot+mybatis+druid数据库连接池

参考博客https://blog.csdn.net/liuxiao723846/article/details/80456025 1.先在pom.xml中引入druid依赖包 <!-- 连接池 --> <!-- Druid 数据连接池依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>

springboot+druid连接池及监控配置

1. 问题描述 阿里巴巴的数据库连接池Druid在效率与稳定性都很高,被很多开发团队使用,并且自带的Druid监控也很好用,本章简单介绍下springboot+druid配置连接池及监控. 2. 解决方案 2.1 pom.xml springboot 已经有druid的starter,但是好像有点问题,不知道为什么没拿到jar包,有可能是网络问题,还是使用了原生的druid gav. <dependency> <groupId>com.alibaba</groupId>

springboot---整合druid连接池---连接oracle数据库---整合mybatis---整合thymeleaf---日志配置

目录 在新建的springboot项目pom文件中新添druid连接池的依赖 在application.properties配置文件中添加配置 配置静态文件目录和模板文件目录 @(springboot---整合druid连接池---连接oracle数据库---整合mybatis---整合thymeleaf---日志配置) 在新建的springboot项目pom文件中新添druid连接池的依赖 <!-- druid数据库连接池 --> <dependency> <groupId

SpringBoot配置MySql数据库和Druid连接池

1.pom文件增加相关依赖,我这里因为上面引入了父pom,所以不需要在当前pom文件下加版本 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifact

Druid连接池-阿里巴巴开源JDBC组件

Druid在连接池领域里可以说是比较火的,是阿里巴巴开源的JDBC连接池.监控组件,下面就简单介绍它一下. 它包括三部分:  DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系. DruidDataSource 高效可管理的数据库连接池. SQLParser . 功能:     .  可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助.     .  替换D

spring 4 + jpa(hibernate 3/4) + spring mvc 多数据源配置(二)+Druid连接池

接上一个博文(http://www.loveweir.com/html/18.html),没有数据库连接池,纯粹用jpa的官方链接. 所以这次要加上连接池本文用Druid连接池来实现多数据源的配置. persistence.xml 这个文件可以省略了,全部配置在applicationContext.xml 里面: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www

SPRINGBOOT配置MYSQL,MYBATIS,DRUID

配置 DRUID连接池 MYSQL数据库 MYBATIS持久层框架 添加依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version></dependency><dependency> <groupId>org.mybatis.