spring boot 整合mybatis、redis、 spring mvc基本配置

1. pom.xml


xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0


com.wisdom
springboot
0.0.1-SNAPSHOT
war


springboot
Demo project for Spring Boot



        org.springframework.boot
        spring-boot-starter-parent
        1.5.2.RELEASE
       
   



   
        UTF-8
        UTF-8
        1.7
   




   
   
      org.springframework.boot
      spring-boot-starter
     
       
          org.springframework.boot
          spring-boot-starter-logging
       

     

   



   
   
      org.springframework.boot
      spring-boot-starter-log4j
      1.3.8.RELEASE
   

   
   
org.springframework.boot
spring-boot-starter-tomcat
provided

       
            org.springframework.boot
            spring-boot-starter-jdbc
       

       
    org.springframework.boot
    spring-boot-starter-data-redis

       
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.0
       

       
            org.springframework.boot
            spring-boot-starter-web
       

        
       
            org.springframework.boot
            spring-boot-starter-test
            test
       

       
            mysql
            mysql-connector-java
            5.1.35
       

       
       
            com.alibaba
            druid
            1.0.11
       

       
            com.fasterxml.jackson.core
            jackson-core
       

       
            com.fasterxml.jackson.core
            jackson-databind
       

       
            com.fasterxml.jackson.datatype
            jackson-datatype-joda
       

       
            com.fasterxml.jackson.module
            jackson-module-parameter-names
       

       
       
            com.github.pagehelper
            pagehelper-spring-boot-starter
            1.1.2
       

       

jstl
jstl
1.2

       
       
            com.alibaba
            druid-spring-boot-starter
            1.1.0
       

        
       
       
            org.springframework.data
            spring-data-redis
            1.7.0.RELEASE
       



       
            redis.clients
            jedis
            2.7.3
       

       
        
       
           org.apache.tomcat.embed
           tomcat-embed-jasper
           provided
       

        
       

org.apache.commons
commons-lang3
3.3.2


org.apache.commons
commons-io
1.3.2


commons-codec
commons-codec

   



   
       
           
                org.springframework.boot
                spring-boot-maven-plugin
           

           
           
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.2
               
                    ${basedir}/src/main/resources/generator/generatorConfig.xml
                    true
                    true
               

           

       

   

2. application.yml

server:
  servlet-path: /
spring:
  datasource:
     name: test
url:jdbc:mysql://127.0.0.1:3306/CMS?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
     username: root
     password: minqiang
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.jdbc.Driver
     filters: stat
     maxActive: 20
     initialSize: 1
     maxWait: 60000
     minIdle: 1
     timeBetweenEvictionRunsMillis: 60000
     minEvictableIdleTimeMillis: 300000
     validationQuery: select 'x'
     testWhileIdle: true
     testOnBorrow: false
     testOnReturn: false
     poolPreparedStatements: true
     maxOpenPreparedStatements: 20


  mvc:
    view:
      prefix: /WEB-INF/jsp/ 
      suffix: .jsp
  redis:
    host: 192.168.204.130
    port: 6379
    pool:
      max-active: 1000
      max-idle: 1000
      max-wait: 1000000
  
    
mybatis:
      mapper-locations: classpath:mapping/*.xml
      type-aliases-package: com.wisdom.model
      

  3. spring boot的入口类

    package com.wisdom;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.cache.annotation.EnableCaching;


@SpringBootApplication
@EnableCaching
public class SpringbootApplication extends SpringBootServletInitializer{


public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}


@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootApplication.class);
}



}

4. mybatis有关接口和映射文件

package com.wisdom.dao;


import java.util.List;


import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;


import com.wisdom.model.User;


@Mapper
public interface UserMapper {
/*@Select("SELECT * FROM user WHERE id = #{userId}")
public User selectByPrimaryKey(int userId);*/
public User selectByPrimaryKey(int userId);


    public List selectAllUser();


    public void insertUser(User user);


    public void deleteUser(int id);


    public List findUsers(String keyWords);


    public void editUser(User user);

}

Usermapper.xml

  


   
       
       
       
       
   

   
        id,userName,sex,age
   

   


   
   


   
   
        INSERT INTO
        user(userName,sex,age) VALUES
        (#{userName},#{sex},#{age})
   



   
   
        DELETE FROM user WHERE
        id=#{id}
   



   
   
        UPDATE user SET
        userName=#{userName}, sex=#{sex},age=#{age} WHERE id=#{id}
   

 

UserMapper和UserMapper.xml放在一个目录下面

5. Redis相关的service配置

package com.wisdom.service.impl;


import java.util.List;


import javax.annotation.Resource;


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;


import com.wisdom.dao.UserMapper;
import com.wisdom.model.User;
import com.wisdom.service.IUserService;
/**
 * userService
 * 
 * 缓存机制说明:所有的查询结果都放进了缓存,也就是把MySQL查询的结果放到了redis中去,
 * 然后第二次发起该条查询时就可以从redis中去读取查询的结果,从而不与MySQL交互,从而达到优化的效果,
 * redis的查询速度之于MySQL的查询速度相当于 内存读写速度 /硬盘读写速度 
 * @Cacheable("a")注解的意义就是把该方法的查询结果放到redis中去,下一次再发起查询就去redis中去取,存在redis中的数据的key就是a;
 * @CacheEvict(value={"a","b"},allEntries=true) 的意思就是执行该方法后要清除redis中key名称为a,b的数据;
 * 
 * 
 * 
 * 缓存主要在service层进行,查询的结果会缓存,把对象序列号存到redis中去,key就是注解中的参数,
 * 例如@Cacheable("findUsers"): 存在redis中的key就是findUsers。缓存了这个结果之后再次请求这个方法就不会去数据库中查,
 * 而是从redis缓存中读取数据,这样就减少了跟数据库之间的交互。然后修改、删除、增加操作就会清除缓存,保持数据的一致性。
 */
@Service("userService")
@Transactional(propagation=Propagation.REQUIRED, rollbackFor=Exception.class) 
public class UserService implements IUserService {


@Resource
    private UserMapper iUserDao;

private static final Log logger = LogFactory.getLog(UserService.class);


    @Cacheable("getUserById") //标注该方法查询的结果进入缓存,再次访问时直接读取缓存中的数据
    @Override
    public User getUserById(int userId) {
        return this.iUserDao.selectByPrimaryKey(userId);
    }


    @Cacheable("getAllUser")
    @Override
    public List getAllUser() {
        return this.iUserDao.selectAllUser();
    }


    @CacheEvict(value= {"getAllUser","getUserById","findUsers"},allEntries=true)//清空缓存,allEntries变量表示所有对象的缓存都清除
    @Override
    public void insertUser(User user) {
        this.iUserDao.insertUser(user);
    }


    @CacheEvict(value= {"getAllUser","getUserById","findUsers"},allEntries=true)
    @Override
    public void deleteUser(int id) {
        this.iUserDao.deleteUser(id);
    }


    @Cacheable("findUsers")
    @Override
    public List findUsers(String keyWords) {
    logger.info("当前访问的关键字:" + keyWords);
        return iUserDao.findUsers(keyWords);
    }


    @CacheEvict(value= {"getAllUser","getUserById","findUsers"},allEntries=true)
    @Override
    public void editUser(User user) {
        this.iUserDao.editUser(user);
    }


}

/**
 * 要想使用redis存对象,一定要让实体类实现Serializable接口,否则会报错。
 *
 */


你可能感兴趣的:(spring boot 整合mybatis、redis、 spring mvc基本配置)