>  기사  >  Java  >  mybatis 소개 및 구성 세부정보

mybatis 소개 및 구성 세부정보

黄舟
黄舟원래의
2017-09-02 11:14:401335검색

이 글은 주로 마이바티스의 소개와 구성을 소개하고, 마이바티스+Spring+MySql의 간단한 구성을 소개합니다. 관심 있는 분들은 배워보시면 됩니다.

마이바티스 소개

마이바티스는 프로그램입니다. SQL, 저장 프로시저 및 고급 매핑을 위한 지속성 계층 프레임워크를 사용자 정의할 수 있습니다. MyBatis는 대부분의 JDBC 코드, 매개변수 수동 설정 및 결과 세트 검색을 제거합니다. MyBatis는 기본 데이터 유형, Map 인터페이스 및 POJO를 데이터베이스 레코드에 구성하고 매핑하기 위해 간단한 XML과 주석만 사용합니다. Hibernate 및 Apache OJB와 같은 "원스톱" ORM 솔루션과 비교할 때 Mybatis는 "반자동" ORM 구현입니다.
사용해야 하는 Jar 패키지: mybatis-3.0.2.jar(mybatis 코어 패키지). mybatis-spring-1.0.0.jar (Spring과 결합된 패키지)

MyBatis+Spring+MySql 간단한 구성

Spring 환경 구축


1. Spring 프레임워크 및 구성 파일을 추가합니다. xml 필요한 jar 패키지(spring Framework, mybatis, mybatis-spring, junit 등)를 추가하고

4 web.xml 및 spring 구성 파일을 변경하고

5 jsp 페이지와 해당 컨트롤러를 추가합니다. 시험 .


MySql 데이터베이스 생성

학생 과목 선택 관리 데이터베이스를 생성합니다.
테이블: 학생 테이블, 수업 테이블, 교사 테이블, 강좌 일정, 학생 강좌 선택 테이블.


논리적 관계: 각 학생은 수업을 갖고 있으며 각 수업은 수업 교사에 해당합니다. 각 교사는 한 수업의 수업 교사만 될 수 있습니다.


다음 SQL을 사용하여 데이터베이스를 구축하고 먼저 학생 테이블을 생성합니다. 데이터(2항목 이상)를 삽입합니다.


더 많은 SQL에 대해서는 리소스/sql에서 프로젝트 소스 파일을 다운로드 받으세요.


/* 建立数据库 */ 
CREATE DATABASE STUDENT_MANAGER; 
USE STUDENT_MANAGER; 
 
/***** 建立student表 *****/ 
CREATE TABLE STUDENT_TBL 
( 
  STUDENT_ID     VARCHAR(255) PRIMARY KEY, 
  STUDENT_NAME    VARCHAR(10) NOT NULL, 
  STUDENT_SEX    VARCHAR(10), 
  STUDENT_BIRTHDAY  DATE, 
  CLASS_ID      VARCHAR(255) 
); 
 
/*插入**/ 
INSERT INTO STUDENT_TBL (STUDENT_ID, 
             STUDENT_NAME, 
             STUDENT_SEX, 
             STUDENT_BIRTHDAY, 
             CLASS_ID) 
 VALUES  (123456, 
      '某某某', 
      '女', 
      '1980-08-01', 
      121546 
      )

MySql에 연결하는 데 사용되는 구성 파일 mysql.properties를 만듭니다.


jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost:3306/student_manager?user=root&password=bjpowernode&useUnicode=true&characterEncoding=UTF-8

MyBatis 환경 구축

순서에 관계없이 작성된 파일을 최대한 적게 수정할 수 있기 때문에 현재 순서입니다.

엔티티 클래스 생성: StudentEntity


public class StudentEntity implements Serializable { 
  private static final long serialVersionUID = 3096154202413606831L; 
  private ClassEntity classEntity; 
  private Date studentBirthday; 
  private String studentID; 
  private String studentName; 
  private String studentSex; 
   
  public ClassEntity getClassEntity() { 
    return classEntity; 
  } 
 
  public Date getStudentBirthday() { 
    return studentBirthday; 
  } 
 
  public String getStudentID() { 
    return studentID; 
  } 
 
  public String getStudentName() { 
    return studentName; 
  } 
 
  public String getStudentSex() { 
    return studentSex; 
  } 
 
  public void setClassEntity(ClassEntity classEntity) { 
    this.classEntity = classEntity; 
  } 
 
  public void setStudentBirthday(Date studentBirthday) { 
    this.studentBirthday = studentBirthday; 
  } 
 
  public void setStudentID(String studentID) { 
    this.studentID = studentID; 
  } 
 
  public void setStudentName(String studentName) { 
    this.studentName = studentName; 
  } 
 
  public void setStudentSex(String studentSex) { 
    this.studentSex = studentSex; 
  } 
}

학생 클래스에 해당하는 데이터 액세스 인터페이스


Dao 인터페이스 생성: StudentMapper.

public interface StudentMapper { 
   
  public StudentEntity getStudent(String studentID); 
   
  public StudentEntity getStudentAndClass(String studentID); 
   
  public List<StudentEntity> getStudentAll(); 
   
  public void insertStudent(StudentEntity entity); 
   
  public void deleteStudent(StudentEntity entity); 
   
  public void updateStudent(StudentEntity entity); 
}

SQL 매핑 문 파일 만들기


학생 클래스 SQL 문 파일 StudentMapper.xml

resultMap 태그: 테이블 필드 및 속성 매핑.


태그 선택: sql 쿼리.


<?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.manager.data.StudentMapper"> 
 
  <resultMap type="StudentEntity" id="studentResultMap"> 
    <id property="studentID" column="STUDENT_ID"/> 
    <result property="studentName" column="STUDENT_NAME"/> 
    <result property="studentSex" column="STUDENT_SEX"/> 
    <result property="studentBirthday" column="STUDENT_BIRTHDAY"/> 
  </resultMap> 
   
  <!-- 查询学生,根据id --> 
  <select id="getStudent" parameterType="String" resultType="StudentEntity" resultMap="studentResultMap"> 
    <![CDATA[ 
      SELECT * from STUDENT_TBL ST 
        WHERE ST.STUDENT_ID = #{studentID} 
    ]]>  
  </select> 
   
  <!-- 查询学生列表 --> 
  <select id="getStudentAll" resultType="commanagerdatamodelStudentEntity" resultMap="studentResultMap"> 
    <![CDATA[ 
      SELECT * from STUDENT_TBL 
    ]]>  
  </select> 
   
</mapper>

MyBatis 매퍼 구성 파일 만들기


src/main/resource에 MyBatis 구성 파일 mybatis-config.xml을 만듭니다.
typeAliases 태그: 클래스에 별칭을 지정합니다. com.manager.data.model.StudentEntity 클래스인 경우 StudentEntity를 대신 사용할 수 있습니다.


Mappers 태그: MyBatis에서 엔터티 클래스의 SQL 매핑 문 파일을 로드합니다.


<?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> 
    <typeAlias alias="StudentEntity" type="com.manager.data.model.StudentEntity"/> 
  </typeAliases> 
  <mappers> 
    <mapper resource="com/manager/data/maps/StudentMapper.xml" /> 
  </mappers> 
</configuration>

Spring 구성 파일 수정


주로 SqlSession 프로덕션 팩토리 클래스 SqlSessionFactoryBean(mybatis.spring 패키지에 있음)의 빈을 추가합니다. 구성 파일 위치와 dataSource를 지정해야 합니다.
데이터 액세스 인터페이스에 해당하는 구현 Bean입니다. MapperFactoryBean을 통해 생성됩니다. 인터페이스 클래스의 전체 이름과 SqlSession 팩토리 빈에 대한 참조를 구현해야 합니다.


<!-- 导入属性配置文件 --> 
<context:property-placeholder location="classpath:mysql.properties" /> 
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
  <property name="driverClassName" value="${jdbc.driverClassName}" /> 
  <property name="url" value="${jdbc.url}" /> 
</bean> 
 
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
  <property name="dataSource" ref="dataSource" /> 
</bean> 
 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
  <property name="configLocation" value="classpath:mybatis-config.xml" /> 
  <property name="dataSource" ref="dataSource" /> 
</bean> 
 
<!— mapper bean --> 
<bean id="studentMapper" class="org.mybatis.spring.MapperFactoryBean"> 
  <property name="mapperInterface" value="com.manager.data.StudentMapper" /> 
  <property name="sqlSessionFactory" ref="sqlSessionFactory" /> 
</bean>

매퍼 빈을 정의할 수 없으며 주석을 사용할 수도 있습니다.


StudentMapper 주석 추가


@Repository 
@Transactional 
public interface StudentMapper { 
}

그에 따라, Dispatcher-servlet.xml에 스캐닝을 추가해야 합니다.


르레에

Test StudentMapper


SpringMVC를 사용하여 테스트하고, TestController를 만들고, Tomcat을 구성하고, index.do 페이지를 방문하여 테스트하세요.

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
  <property name="annotationClass" value="org.springframework.stereotype.Repository"/> 
  <property name="basePackage" value="comlimingmanager"/> 
  <property name="sqlSessionFactory" ref="sqlSessionFactory"/> 
</bean>

Junit을 사용하여 테스트하세요.


@Controller 
public class TestController { 
 
  @Autowired 
  private StudentMapper studentMapper; 
   
  @RequestMapping(value = "index.do") 
  public void indexPage() {   
    StudentEntity entity = studentMappergetStudent("10000013"); 
    System.out.println("name:" + entity.getStudentName()); 
  }   
}

위 내용은 mybatis 소개 및 구성 세부정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.