mybatis、sql、logback等配置及資料增刪改查的簡單示例
阿新 • • 發佈:2022-03-13
資料持久層框架mybatis的應用
Mybatis和logback的應用配置
配置pom.xml檔案:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.7</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>org.example</groupId> <artifactId>Chapter11</artifactId> <version>1.0-SNAPSHOT</version> <description>Demo project for Spring Boot</description> <properties> <java.version>11</java.version> <swagger.version>2.7.0</swagger.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>${swagger.version}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>${swagger.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.79</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.1</version> </dependency> </dependencies> </project>
配置application.yml檔案
配置mysql、mybatis、log、springboot
server: port: 8888 logging: file: path: logs name: mylog.log spring: application: name: myTest datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://39.103.154.236:3306/course username: root password: 123456 mybatis: type-aliases-package: com.course.model mapper-locations: - mapper/*
配置logback.xml檔案
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n"/> <property name="LOG_PATH" value="${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}"/> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/${LOG_FILE}</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/${LOG_FILE}.%d{yyyy-MM-dd}</fileNamePattern> </rollingPolicy> <encoder charset="UTF-8"> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> </appender> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> </appender> <appender name="CRAWLER_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/event.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/event.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%msg%n</pattern> </encoder> </appender> <logger name="com.business.intelligence.util.CrawlerLogger" level="INFO" additivity="false"> <appender-ref ref="CRAWLER_LOG"/> </logger> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> </root> </configuration>
配置mybatis配置檔案
<?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>
<typeAliases>
<package name="com.course.model"/>
</typeAliases>
<mappers>
<mapper resource="mapper/mysql.xml"/>
</mappers>
</configuration>
配置mysql檔案
用來寫sql語句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.course">
<select id="getUserCount" resultType="Integer">
select count(*) from user;
</select>
</mapper>
配置啟動檔案
package com.course;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableScheduling;
import javax.annotation.PreDestroy;
@EnableScheduling
@SpringBootApplication
public class Application {
private static ConfigurableApplicationContext context;
public static void main(String[] args) {
Application.context = SpringApplication.run(Application.class,args);
}
@PreDestroy
public void close(){
Application.context.close();
}
}
測試Demo
package com.course.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.log4j.Log4j;
import lombok.extern.log4j.Log4j2;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@Log4j2
@RestController
@Api(value = "v1",description = "這是我第一個版本的demo")
@RequestMapping(value = "v1")
public class Demo {
//首先獲取一個執行sql語句的物件
@Autowired
private SqlSessionTemplate template;
@RequestMapping(value = "/getUserCount",method = RequestMethod.GET)
@ApiOperation(value = "可以獲取到使用者數",httpMethod = "GET")
public int getUserCount(){
return template.selectOne("getUserCount");
}
}
mybatis-sql,增加資料
新增mysql檔案
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.course">
<select id="getUserCount" resultType="Integer">
select count(*) from user;
</select>
<insert id="addUser" parameterType="com.course.model.User">
insert into user(id,name,age,sex)
values (#{id},#{name},#{age},#{sex})
</insert>
</mapper>
新增資料結構User
package com.course.model;
import lombok.Data;
@Data
public class User {
private int id;
private String name;
private int age;
private String sex;
}
新增介面addUser
package com.course.controller;
import com.course.model.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.log4j.Log4j;
import lombok.extern.log4j.Log4j2;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@Log4j2
@RestController
@Api(value = "v1",description = "這是我第一個版本的demo")
@RequestMapping(value = "v1")
public class Demo {
//首先獲取一個執行sql語句的物件
@Autowired
private SqlSessionTemplate template;
@RequestMapping(value = "/getUserCount",method = RequestMethod.GET)
@ApiOperation(value = "可以獲取到使用者數",httpMethod = "GET")
public int getUserCount(){
return template.selectOne("getUserCount");
}
@RequestMapping(value = "addUser",method = RequestMethod.POST)
@ApiOperation(value = "增加使用者",httpMethod = "POST")
public int addUser(@RequestBody User user){
return template.insert("addUser",user);
}
}
mybatis-sql,更新資料
新增mysql檔案
<update id="updateUser" parameterType="com.course.model.User">
update user set name =#{name},age=#{age}
where id=#{id}
</update>
新增介面updateUser
@RequestMapping(value = "updateUser",method = RequestMethod.POST)
@ApiOperation(value = "更新使用者",httpMethod = "POST")
public int updateUser(@RequestBody User user){
return template.update("updateUser",user);
}
mybatis-sql,刪除資料
新增mysql檔案
<delete id="deleteUser" parameterType="Integer">
delete from user where id = #{id}
</delete>
新增介面deleteUser
@RequestMapping(value = "deleteUser",method = RequestMethod.POST)
@ApiOperation(value = "刪除使用者",httpMethod = "POST")
public int deleteUser(@RequestParam int id){
return template.delete("deleteUser",id);
}