Maison  >  Article  >  Java  >  Introduction et détails de configuration de mybatis

Introduction et détails de configuration de mybatis

黄舟
黄舟original
2017-09-02 11:14:401335parcourir

Cet article présente principalement l'introduction et la configuration de mybatis, et présente la configuration simple de MyBatis+Spring+MySql Ceux qui sont intéressés peuvent en savoir plus

Introduction à MyBatis

MyBatis est un framework de couche de persistance qui peut personnaliser SQL, les procédures stockées et le mappage avancé. MyBatis élimine la plupart du code JDBC, le réglage manuel des paramètres et la récupération des jeux de résultats. MyBatis utilise uniquement du XML simple et des annotations pour configurer et mapper les types de données de base, mapper les interfaces et les POJO aux enregistrements de base de données. Comparé aux solutions ORM « à guichet unique » telles que Hibernate et Apache OJB, Mybatis est une implémentation ORM « semi-automatisée ».

Le package Jar qui doit être utilisé : mybatis-3.0.2.jar (package principal mybatis). mybatis-spring-1.0.0.jar (paquet combiné avec Spring).

MyBatis+Spring+MySql configuration simple

Création d'un environnement Spring

1. Créez un projet Web maven ;

2. Ajoutez le framework Spring et les fichiers de configuration
3. Ajoutez les packages jar requis (spring framework, mybatis, mybatis-spring, junit) à pom.xml. etc.);
4, modifiez les fichiers de configuration web.xml et spring
5, ajoutez une page jsp et le contrôleur correspondant
6, testez.

Créer une base de données MySql

Créer une base de données de gestion des sélections de cours des étudiants.


Tableau : table des étudiants, table des classes, table des professeurs, planning des cours, table de sélection des cours des étudiants.


Relation logique : chaque élève a une classe ; chaque classe correspond à un professeur de classe ; chaque professeur ne peut être que le professeur d'une classe


Utilisez ce qui suit ; Pour créer une base de données à l'aide de SQL, créez d'abord une table étudiant et insérez des données (plus de 2 éléments).


Pour plus de SQL, veuillez télécharger le fichier source du projet dans resource/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 
      )
Créez le fichier de configuration mysql.properties utilisé pour se connecter à MySql.



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

Création de l'environnement MyBatis

Toute commande, maintenant Le L'ordre est dû au fait que les fichiers écrits peuvent être modifiés le moins possible.


Créer une classe d'entité : 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; 
  } 
}

Créer une interface d'accès aux données

Interface Dao correspondant à la classe Etudiant : 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); 
}

Créer un fichier d'instructions de mappage SQL

Fichier d'instructions SQL de classe d'étudiant StudentMapper.xml


balise resultMap : mappage des champs et des attributs de la table.


Sélectionner la balise : requête 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>

Créer le fichier de configuration du mappeur MyBatis

Créez-le dans src/main/resource MyBatis fichier de configuration : mybatis-config.xml.


balise typeAliases : donnez un alias à la classe. com.manager.data.model.StudentEntity, vous pouvez utiliser StudentEntity à la place.


Balise Mappers : Chargez le fichier d'instruction de mappage SQL de la classe d'entité dans 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> 
    <typeAlias alias="StudentEntity" type="com.manager.data.model.StudentEntity"/> 
  </typeAliases> 
  <mappers> 
    <mapper resource="com/manager/data/maps/StudentMapper.xml" /> 
  </mappers> 
</configuration>

Modifier le fichier de configuration Spring

Ajouter principalement le bean de la classe d'usine de production SqlSession : SqlSessionFactoryBean , (dans le package mybatis.spring). L'emplacement du fichier de configuration et dataSource doivent être spécifiés.


Le bean d'implémentation correspondant à l'interface d'accès aux données. Créé via MapperFactoryBean. Il est nécessaire d'implémenter le nom complet de la classe d'interface et une référence au bean factory 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>
Vous pouvez également ne pas définir le bean mapper, utiliser des annotations :


Ajouter une annotation StudentMapper


@Repository 
@Transactional 
public interface StudentMapper { 
}
En conséquence, la numérisation doit être ajoutée au dispatcher-servlet.xml :



<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>

Test StudentMapper

Utilisez SpringMVC pour tester, créer un TestController, configurer Tomcat, accéder à la page index.do pour tester :



@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()); 
  }   
}
Test avec Junit :



Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn