搭建基礎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. 測試java

1563108722779

1563108740331

相關文章
相關標籤/搜索