搭建基础springboot + mybatis(gradle)

1. gradle配置文件

plugins {
    id 'org.springframework.boot' version '2.1.6.RELEASE'
    id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'com.wx.redis.wx'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
    compile.exclude module: 'spring-boot-starter-logging'//排除对默认logging的依赖
}

repositories {
    mavenCentral()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-redis')
    compile('org.springframework.boot:spring-boot-starter-web')
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'mysql:mysql-connector-java'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    compile group: 'com.alibaba', name: 'druid', version: '1.1.12'
    compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0")
    compile("org.springframework.boot:spring-boot-starter-log4j:1.3.7.RELEASE")
}

2. application.yml

spring:
  redis:
    host: 192.168.47.128
    port: 6379
    database: 0
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/wx-redis?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
server:
  servlet:
    context-path: /wx-redis
mybatis:
  mapperLocations: classpath:mapper/*.xml   #mapper文件路径
  typeAliasesPackage: com.wx.user.domain    #要配置别名的类包路径

3. 目录结构

1563108011695

4. Application.java

@SpringBootApplication
//@MapperScan("com.wx.user.dao") 不在Application.java默认扫描路径下的需使用该注解
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

5. User

@Data
public class User {
    private String id;
    
    private String name;
}

6. UserController

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    
    @GetMapping("/{id}")
    public User getUserById(@PathVariable String id) {
        return userService.getUserById(id);
    }
}

7. UserService

@Service
public class UserService {

    @Resource// 使用Autowired会报警告,但是没影响
    private UserDao userDao;

    public User getUserById(String id) {
        return userDao.selectByPrimaryKey(id);
    }
}

8. UserDao

@Mapper
public interface UserDao {
    User selectByPrimaryKey(String id);
}

9. UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.wx.user.dao.UserDao" >
  <resultMap id="BaseResultMap" type="User" >
    <id column="id" property="id" jdbcType="VARCHAR" />
    <result column="name" property="name" jdbcType="VARCHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    id, name
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
    select 
    <include refid="Base_Column_List" />
    from user
    where id = #{id,jdbcType=VARCHAR}
  </select>
</mapper>

10. mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE configuration  
     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
     "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   <settings>
       <!-- 使全局的映射器启用或禁用缓存。 -->
      <setting name="cacheEnabled" value="true" />
      <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
      <setting name="lazyLoadingEnabled" value="true" />
      <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->        
         <setting name="aggressiveLazyLoading" value="true"/>        
         <!-- 是否允许单条sql 返回多个数据集  (取决于驱动的兼容性) default:true -->
      <setting name="multipleResultSetsEnabled" value="true" />
      <!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
      <setting name="useColumnLabel" value="true" />
      <!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。  default:false  -->
      <setting name="useGeneratedKeys" value="false" />
      <!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分  FULL:全部  -->
      <setting name="autoMappingBehavior" value="PARTIAL" />
      <!-- 这是默认的执行类型  (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新)  -->
      <setting name="defaultExecutorType" value="SIMPLE" />
      
      <setting name="defaultStatementTimeout" value="25" />
      
      <setting name="defaultFetchSize" value="100" />
      
      <setting name="safeRowBoundsEnabled" value="false" />
      <!-- 使用驼峰命名法转换字段。 -->
      <setting name="mapUnderscoreToCamelCase" value="true" />
      <!-- 设置本地缓存范围 session:就会有数据的共享  statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
      <setting name="localCacheScope" value="SESSION" />
      <!-- 默认为OTHER,为了解决oracle插入null报错的问题要设置为NULL -->
      <setting name="jdbcTypeForNull" value="NULL" />
      <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />
   </settings>
   
</configuration>

11. log4j.properties

log4j.rootLogger=DEBUG,Console

#Console  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  

log4j.logger.org.apache=ERROR
log4j.logger.org.mybatis=ERROR
log4j.logger.org.springframework=ERROR
#这个需要
log4j.logger.log4jdbc.debug=ERROR
log4j.logger.com.gk.mapper=ERROR

log4j.logger.jdbc.audit=ERROR
log4j.logger.jdbc.resultset=ERROR
#这个打印SQL语句非常重要
log4j.logger.jdbc.sqlonly=DEBUG
log4j.logger.jdbc.sqltiming=ERROR
log4j.logger.jdbc.connection=FATAL

12. 测试

1563108722779

1563108740331

猜你喜欢

转载自www.cnblogs.com/wen-xin/p/11837843.html