이 글은 주로 마이바티스의 소개와 구성을 소개하고, 마이바티스+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 간단한 구성
1. Spring 프레임워크 및 구성 파일을 추가합니다. xml 필요한 jar 패키지(spring Framework, mybatis, mybatis-spring, junit 등)를 추가하고
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 )
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/student_manager?user=root&password=bjpowernode&useUnicode=true&characterEncoding=UTF-8
MyBatis 환경 구축
순서에 관계없이 작성된 파일을 최대한 적게 수정할 수 있기 때문에 현재 순서입니다.
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); }
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>
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>
주로 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에 스캐닝을 추가해야 합니다.
르레에
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>
@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 중국어 웹사이트의 기타 관련 기사를 참조하세요!