Spring Boot MyBatis 연결 데이터베이스 구성 예
앞에서 JPA와 JDBC 연결 데이터베이스에 대해 설명했고 본고는 공식 코드를 참고하여 요약하였다.
SpringBoot은 기본적으로 org를 사용합니다.apache.tomcat.jdbc.pool.DataSource
현재 HikariCP라는 JDBC 연결탱크 구성 요소가 있는데, 그 성능은 자주 사용하는 c3p0,tomcat,bone,vibur 등보다 훨씬 높다고 한다.
공사의 DataSource를 HirakiDataSource로 변경하려고 합니다. 방법은 간단합니다.
우선 응용 프로그램에서.properties 구성 파일에 지정된 dataSourceType
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
그리고 Pom에 Hikari의 의존을 추가합니다.
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<!-- ,Spring Boot -->
</dependency>
다음은 spring Boot에서 MyBatis를 설정하는 방법입니다.Spring Boot에 MyBatis를 통합하는 방법에 관해서는 주석 기반 방식을 선택할 수도 있고 xml 파일 설정 방식을 선택할 수도 있습니다.양자를 실제로 사용하느냐, 아니면 XML을 사용하느냐 (공식적으로도 XML을 권장한다).
다음은 xml 방식을 통해 조회를 실현하는 방법을 소개하고, 그 다음에 설명 방식을 간단히 설명하며, 마지막으로 페이지 플러그인(PageHelper)의 통합을 첨부할 것이다.
1. xml 프로필을 통해
1、pom 의존 추가
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<!-- 1.0.0 , ,1.0.1-SNAPSHOT , -->
<version>1.0.1-SNAPSHOT</version>
</dependency>
2. 인터페이스 매퍼(클래스가 아님)와 대응하는 매퍼를 만듭니다.xml 파일관련 방법을 정의합니다. 방법 이름은 Mapper입니다.xml 파일의 id가 일치하면 자동으로 대응합니다
StudentMapper.Java
package org.springboot.sample.mapper;
import java.util.List;
import org.springboot.sample.entity.Student;
/**
* StudentMapper, SQL ,
*
* @author (365384722)
* @create 2016 1 20
*/
public interface StudentMapper extends MyMapper<Student> {
List<Student> likeName(String name);
Student getById(int id);
String getNameById(int id);
}
MyMapper.java
package org.springboot.sample.config.mybatis;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
/**
* Mapper, Mapper
*
*/
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {
//TODO
//FIXME , ,
}
StudentMapper.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="org.springboot.sample.mapper.StudentMapper">
<!-- type Student, , -->
<resultMap id="stuMap" type="Student">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="sumScore" column="score_sum" />
<result property="avgScore" column="score_avg" />
<result property="age" column="age" />
</resultMap>
<select id="getById" resultMap="stuMap" resultType="Student">
SELECT *
FROM STUDENT
WHERE ID = #{id}
</select>
<select id="likeName" resultMap="stuMap" parameterType="string" resultType="list">
SELECT *
FROM STUDENT
WHERE NAME LIKE CONCAT('%',#{name},'%')
</select>
<select id="getNameById" resultType="string">
SELECT NAME
FROM STUDENT
WHERE ID = #{id}
</select>
</mapper>
3. 실체 클래스
package org.springboot.sample.entity;
import java.io.Serializable;
/**
*
*
* @author (365384722)
* @create 2016 1 12
*/
public class Student implements Serializable{
private static final long serialVersionUID = 2120869894112984147L;
private int id;
private String name;
private String sumScore;
private String avgScore;
private int age;
// get set
}
4. 응용 프로그램을 수정합니다.properties 프로필
mybatis.mapper-locations=classpath*:org/springboot/sample/mapper/sql/mysql/*Mapper.xml
mybatis.type-aliases-package=org.springboot.sample.entity
5. Controller 또는 Service 호출 방법 테스트
@Autowired
private StudentMapper stuMapper;
@RequestMapping("/likeName")
public List<Student> likeName(@RequestParam String name){
return stuMapper.likeName(name);
}
2. 메모 방식 사용공식 Git의 코드 사용 설명 방식을 보면 설정이 간단하고 사용에 있어서 설명에 대해 많이 알아야 한다.xml과 주해 두 가지 방법이 좋은지 중구난조는 한 사람씩 봐야죠.
1. 시작 클래스(내)에 @MapperScan 메모 추가
@SpringBootApplication
@MapperScan("sample.mybatis.mapper")
public class SampleMybatisApplication implements CommandLineRunner {
@Autowired
private CityMapper cityMapper;
public static void main(String[] args) {
SpringApplication.run(SampleMybatisApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println(this.cityMapper.findByState("CA"));
}
}
2. 인터페이스에서 메모를 사용하여 CRUD 문장 정의
package sample.mybatis.mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import sample.mybatis.domain.City;
/**
* @author Eddú Meléndez
*/
public interface CityMapper {
@Select("SELECT * FROM CITY WHERE state = #{state}")
City findByState(@Param("state") String state);
}
그 중에서 City는 일반 Java 클래스입니다.3. 통합 페이지 분리 플러그인
이것은 페이지 플러그인을 통합하는 것보다 플러그인을 어떻게 통합하는지 소개하는 것이다.MyBatis는 차단기 인터페이스를 제공합니다. 우리는 자신의 차단기를 실현하여 플러그인으로 SqlSessionFactory에 불러올 수 있습니다.
어떤 개발자가 페이지 플러그인을 썼는데, 나는 사용하기에 괜찮다고 생각한다. 매우 편리하다.
프로젝트 주소:Mybatis-PageHelper_jb51.rar
다음은 간단히 설명합니다.
우선 스프링은 bean 주입에 의존할 때 MyBatis에서 인터셉터 인터페이스를 실현하는 모든 종류를 SqlSessionFactory에 주입하여plugin으로 존재한다.그렇다면 플러그인을 통합하는 것은 간단합니다. @Bean을 사용하여 PageHelper 대상을 만들면 됩니다.
1、pom 의존 추가
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
2. MyBatisConfiguration 추가java
package org.springboot.sample.config;
import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.github.pagehelper.PageHelper;
/**
* MyBatis
*
* @author (365384722)
* @create 2016 1 21
*/
@Configuration
public class MyBatisConfiguration {
private static final Logger logger = LoggerFactory.getLogger(MyBatisConfiguration.class);
@Bean
public PageHelper pageHelper() {
logger.info(" MyBatis PageHelper");
PageHelper pageHelper = new PageHelper();
Properties p = new Properties();
p.setProperty("offsetAsPageNum", "true");
p.setProperty("rowBoundsWithCount", "true");
p.setProperty("reasonable", "true");
pageHelper.setProperties(p);
return pageHelper;
}
}
3. 페이지별 조회 테스트
@RequestMapping("/likeName")
public List<Student> likeName(@RequestParam String name){
PageHelper.startPage(1, 1);
return stuMapper.likeName(name);
}
자세한 매개변수 사용 방법은 PageHelper 설명서 를 참조하십시오.이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.