zoukankan      html  css  js  c++  java
  • 数据持久层框架MyBatis的应用

    1.引入依赖

     1 <parent>
     2     <groupId>org.springframework.boot</groupId>
     3     <artifactId>spring-boot-starter-parent</artifactId>
     4     <version>1.5.3.RELEASE</version>
     5   </parent>
     6 <dependency>
     7          <groupId>org.springframework.boot</groupId>
     8          <artifactId>spring-boot-starter-web</artifactId>
     9      </dependency>
    10 
    11      <dependency>
    12          <groupId>io.springfox</groupId>
    13          <artifactId>springfox-swagger-ui</artifactId>
    14          <version>2.6.1</version>
    15      </dependency>
    16 
    17      <dependency>
    18          <groupId>io.springfox</groupId>
    19          <artifactId>springfox-swagger2</artifactId>
    20          <version>2.6.1</version>
    21      </dependency>
    22      <dependency>
    23          <groupId>org.projectlombok</groupId>
    24          <artifactId>lombok</artifactId>
    25          <version>1.16.14</version>
    26      </dependency>
    27      <dependency>
    28          <groupId>com.alibaba</groupId>
    29          <artifactId>fastjson</artifactId>
    30          <version>1.2.38</version>
    31      </dependency>
    32      <dependency>
    33          <groupId>mysql</groupId>
    34          <artifactId>mysql-connector-java</artifactId>
    35      </dependency>
    36      <dependency>
    37          <groupId>org.mybatis.spring.boot</groupId>
    38          <artifactId>mybatis-spring-boot-starter</artifactId>
    39          <version>1.3.0</version>
    40      </dependency>

    2.编写application.yml配置文件,名称必须为application

     1 server:
     2    port: 8888 #指定启动端口号
     3 # 指定默认启动环境
     4 spring:
     5    application:
     6       name: test_service
     7    profiles:
     8       active: test # 默认环境
     9    datasource:
    10        driver-class-name: com.mysql.jdbc.Driver
    11        url: jdbc:mysql://127.0.0.1:3306/test
    12        username: admin
    13        password: admin123
    14 
    15 mybatis:
    16     type-aliases-package: com.test.pojo #这里是实体类的位置,多个package用逗号或分号分隔
    17     mapper-locations:
    18        - mapper/*

    3.mybatis-config.xml配置

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration
     3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4         "http://mybatis.org/dtd/mybatis-3-com.course.config.dtd">
     5 
     6 <configuration>
     7     <typeAliases>
     8         <package name="com.test.pojo"/>
     9     </typeAliases>
    10     <mappers>
    11         <mapper resource="mapper/PeopleMapper.xml"/>
    12     </mappers>
    13 </configuration>

    4.logback.xml配置

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <configuration
      3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      4     xsi:noNamespaceSchemaLocation="http://www.padual.com/java/logback.xsd"
      5     debug="false" scan="true" scanPeriod="30 second">
      6 
      7     <property name="PROJECT" value="iorder" /> 
      8     <property name="ROOT" value="logs/${PROJECT}/" />
      9     <property name="FILESIZE" value="50MB" />
     10     <property name="MAXHISTORY" value="100" />
     11     <timestamp key="DATETIME" datePattern="yyyy-MM-dd HH:mm:ss" />
     12     <!-- 控制台打印 -->
     13     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     14         <encoder charset="utf-8">
     15             <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
     16             </pattern>
     17         </encoder>
     18     </appender>
     19     <!-- ERROR 输入到文件,按日期和文件大小 -->
     20     <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
     21         <encoder charset="utf-8">
     22             <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
     23             </pattern>
     24         </encoder>
     25         <filter class="ch.qos.logback.classic.filter.LevelFilter">
     26             <level>ERROR</level>
     27             <onMatch>ACCEPT</onMatch>
     28             <onMismatch>DENY</onMismatch>
     29         </filter>
     30         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     31             <fileNamePattern>${ROOT}%d/error.%i.log</fileNamePattern>
     32             <maxHistory>${MAXHISTORY}</maxHistory>
     33             <timeBasedFileNamingAndTriggeringPolicy
     34                 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
     35                 <maxFileSize>${FILESIZE}</maxFileSize>
     36             </timeBasedFileNamingAndTriggeringPolicy>
     37         </rollingPolicy>
     38     </appender>
     39     
     40     <!-- WARN 输入到文件,按日期和文件大小 -->
     41     <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
     42         <encoder charset="utf-8">
     43             <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
     44             </pattern>
     45         </encoder>
     46         <filter class="ch.qos.logback.classic.filter.LevelFilter">
     47             <level>WARN</level>
     48             <onMatch>ACCEPT</onMatch>
     49             <onMismatch>DENY</onMismatch>
     50         </filter>
     51         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     52             <fileNamePattern>${ROOT}%d/warn.%i.log</fileNamePattern>
     53             <maxHistory>${MAXHISTORY}</maxHistory>
     54             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
     55                 <maxFileSize>${FILESIZE}</maxFileSize>
     56             </timeBasedFileNamingAndTriggeringPolicy>
     57         </rollingPolicy>
     58     </appender>
     59     
     60     <!-- INFO 输入到文件,按日期和文件大小 -->
     61     <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
     62         <encoder charset="utf-8">
     63             <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
     64             </pattern>
     65         </encoder>
     66         <filter class="ch.qos.logback.classic.filter.LevelFilter">
     67             <level>INFO</level>
     68             <onMatch>ACCEPT</onMatch>
     69             <onMismatch>DENY</onMismatch>
     70         </filter>
     71         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     72             <fileNamePattern>${ROOT}%d/info.%i.log</fileNamePattern>
     73             <maxHistory>${MAXHISTORY}</maxHistory>
     74             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
     75                 <maxFileSize>${FILESIZE}</maxFileSize>
     76             </timeBasedFileNamingAndTriggeringPolicy>
     77         </rollingPolicy>
     78     </appender>
     79     <!-- DEBUG 输入到文件,按日期和文件大小 -->
     80     <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
     81         <encoder charset="utf-8">
     82             <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
     83             </pattern>
     84         </encoder>
     85         <filter class="ch.qos.logback.classic.filter.LevelFilter">
     86             <level>DEBUG</level>
     87             <onMatch>ACCEPT</onMatch>
     88             <onMismatch>DENY</onMismatch>
     89         </filter>
     90         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     91             <fileNamePattern>${ROOT}%d/debug.%i.log</fileNamePattern>
     92             <maxHistory>${MAXHISTORY}</maxHistory>
     93             <timeBasedFileNamingAndTriggeringPolicy
     94                 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
     95                 <maxFileSize>${FILESIZE}</maxFileSize>
     96             </timeBasedFileNamingAndTriggeringPolicy>
     97         </rollingPolicy>
     98     </appender>
     99     <!-- TRACE 输入到文件,按日期和文件大小 -->
    100     <appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    101         <encoder charset="utf-8">
    102             <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n
    103             </pattern>
    104         </encoder>
    105         <filter class="ch.qos.logback.classic.filter.LevelFilter">
    106             <level>TRACE</level>
    107             <onMatch>ACCEPT</onMatch>
    108             <onMismatch>DENY</onMismatch>
    109         </filter>
    110         <rollingPolicy
    111             class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    112             <fileNamePattern>${ROOT}%d/trace.%i.log</fileNamePattern>
    113             <maxHistory>${MAXHISTORY}</maxHistory>
    114             <timeBasedFileNamingAndTriggeringPolicy
    115                 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    116                 <maxFileSize>${FILESIZE}</maxFileSize>
    117             </timeBasedFileNamingAndTriggeringPolicy>
    118         </rollingPolicy>
    119     </appender>
    120     
    121     <!-- SQL相关日志输出-->
    122     <logger name="org.apache.ibatis" level="INFO" additivity="false" />
    123     <logger name="org.mybatis.spring" level="INFO" additivity="false" />
    124     <logger name="com.github.miemiedev.mybatis.paginator" level="INFO" additivity="false" />
    125     
    126     <!-- Logger 根目录 -->
    127     <root level="DEBUG">
    128         <appender-ref ref="STDOUT" />
    129         <appender-ref ref="DEBUG" />  
    130         <appender-ref ref="ERROR" />
    131         <appender-ref ref="WARN" />
    132         <appender-ref ref="INFO" /> 
    133         <appender-ref ref="TRACE" />
    134     </root>
    135 </configuration>

    5.src下新建mapper包,包下新建PeopleMapper.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper
     3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 
     6 <mapper namespace="com.test">
     7     <select id="getPeopleCount" resultType="Integer">
     8         select count(*) from people;
     9     </select>
    10 </mapper>

    6.新建People实体类

     1 package com.test.pojo;
     2 
     3 import lombok.Data;
     4 
     5 @Data
     6 public class People {
     7     private int id;
     8     private String name;
     9     private int age;
    10 }

    7.新建com.test.controller包,包下新建Demo类,编写查询方法

     1 @Log4j
     2 @RestController
     3 @Api(value = "v1",description = "这是我的第一个版本的demo")
     4 @RequestMapping("v1")
     5 public class Demo {
     6     //首先获取一个执行sql语句的对象
     7 
     8     @Autowired
     9     private SqlSessionTemplate template;
    10 
    11     @GetMapping(value = "/getPeopleCount")
    12     @ApiOperation(value = "可以获取到用户数")
    13     public int getUserCount(){
    14        return template.selectOne("getPeopleCount");
    15     }
    16 }

    8.编写springboot启动类,运行

     1 package com.test;
     2 
     3 
     4 import org.springframework.boot.SpringApplication;
     5 import org.springframework.boot.autoconfigure.SpringBootApplication;
     6 import org.springframework.context.ConfigurableApplicationContext;
     7 import org.springframework.scheduling.annotation.EnableScheduling;
     8 
     9 import javax.annotation.PreDestroy;
    10 
    11 @EnableScheduling //开启计划任务的支持
    12 @SpringBootApplication
    13 public class Application {
    14 
    15     private  static ConfigurableApplicationContext context;
    16 
    17     public static void main(String[] args) {
    18         Application.context = SpringApplication.run(Application.class,args);
    19     }
    20     //释放资源
    21     @PreDestroy
    22     public void close(){
    23         Application.context.close();
    24     }
    25 
    26 }

    9.新增接口

    9.1PeopleMapper.xml中配置

    1 <insert id="insPeo">
    2         insert into people values(#{id},#{name},#{age});
    3     </insert>

    9.2Demo中配置

    1 @PostMapping("/addPeople")
    2     @ApiOperation(value = "增加用户")
    3     public int addPeople(@RequestBody People peo) {
    4         return template.insert("insPeo",peo);
    5     }

    10.修改接口

    10.1PeopleMapper.xml中配置

    1 <update id="updPeo">
    2         update people set name=#{name},age=#{age} where id=#{id};
    3     </update>

    10.2Demo中配置

    1 @PostMapping("/updPeople")
    2     @ApiOperation(value = "修改用户信息")
    3     public int updPeople(@RequestBody People peo) {
    4         return template.update("updPeo",peo);
    5     }

    11.删除接口

    11.1PeopleMapper.xml中配置

    1  <delete id="delPeo">
    2         delete from people where id =#{id};
    3     </delete>

    11.2Demo中配置

    1 @PostMapping("/delPeople")
    2     @ApiOperation(value = "删除用户信息")
    3     public int delPeople(@RequestBody People peo) {
    4         return template.delete("delPeo",peo);
    5     }
  • 相关阅读:
    CSS的三种定位方式介绍(转载)
    CSS背景颜色透明
    去除网页滚动条的方法
    es6
    Android复习
    caculater
    字符流
    字节流
    File类
    泛型继承
  • 原文地址:https://www.cnblogs.com/heyuling/p/12092345.html
Copyright © 2011-2022 走看看