A propos du framework Mybatis------Une brève introduction aux bases


insérez la description de l'image ici

1. Qu'est-ce que Mybatis

  1. mybatis est un excellent framework de couche de persistance basé sur Java. Il encapsule jdbc en interne, de sorte que les développeurs n'ont qu'à prêter attention à l'instruction sql elle-même, et n'ont pas besoin de dépenser de l'énergie pour gérer des processus compliqués tels que le chargement de pilotes, la création connexions et la création d'instructions.

  2. Mybatis configure diverses instructions à exécuter via xml ou des annotations, et génère l'instruction sql finale exécutée en mappant l'objet java et les paramètres dynamiques de sql dans l'instruction.

  3. Enfin, le framework mybatis exécute sql et mappe le résultat sur un objet java et le renvoie. L'idée ORM est utilisée pour résoudre le problème de mappage d'entité et de base de données, et le jdbc est encapsulé pour protéger les détails d'accès sous-jacents de l'api jdbc, afin que nous puissions terminer l'opération persistante de la base de données sans traiter avec l'api jdbc.

2. Démarrage rapide de Mybatis

2.1 Étapes de développement de MyBatis

  Adresse du site officiel MyBatis

Étapes de développement de MyBatis :

  ①Ajouter les coordonnées de MyBatis

  ②Créer une table de données utilisateur

  ③ Écrivez la classe d'entité Utilisateur

  ④ Ecrire le fichier de mappage UserMapper.xml

  ⑤ Écrivez le fichier principal SqlMapConfig.xml

  ⑥ Écrire des classes de test

2.2 Environnement Construction

  1. Importer les coordonnées MyBatis et autres coordonnées associées
<!--mybatis坐标-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
</dependency>
<!--mysql驱动坐标-->
<dependency>    
    <groupId>mysql</groupId>   
    <artifactId>mysql-connector-java</artifactId>    
    <version>5.1.6</version>    
    <scope>runtime</scope>
</dependency>
<!--单元测试坐标-->
<dependency>    
    <groupId>junit</groupId>    
    <artifactId>junit</artifactId>    
    <version>4.12</version>    
    <scope>test</scope>
</dependency>
<!--日志坐标-->
<dependency>    
    <groupId>log4j</groupId>    
    <artifactId>log4j</artifactId>    
    <version>1.2.12</version>
</dependency>
  1. Créer une table de données utilisateur

  2. Écrire l'entité utilisateur

  3. Écrire le fichier de mappage UserMapper

<?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="userMapper">    
	<select id="findAll" resultType="com.itheima.domain.User">        
		select * from User    
	</select>
</mapper>
  1. Ecrire les fichiers core MyBatis
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN“ "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>    
	<environments default="development">        
		<environment id="development">            
			<transactionManager type="JDBC"/>            
			<dataSource type="POOLED">                
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql:///test"/>                
				<property name="username" value="root"/>
				<property name="password" value="123456"/>            
			</dataSource>        
		</environment>    
	</environments>    
	
	<mappers> 
		<mapper resource="com/itheima/mapper/UserMapper.xml"/> 
	</mappers>
</configuration>
  1. écrire le code de test
//加载核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//获得sqlSession工厂对象
SqlSessionFactory sqlSessionFactory = new            
                           SqlSessionFactoryBuilder().build(resourceAsStream);
//获得sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行sql语句
List<User> userList = sqlSession.selectList("userMapper.findAll");
//打印结果
System.out.println(userList);
//释放资源
sqlSession.close();

3. Présentation du fichier cartographique de MyBatis

insérez la description de l'image ici

4. Ajouter, supprimer, modifier et vérifier les opérations de MyBatis

4.1 Opération d'insertion de données de MyBatis

  1. Écrire le fichier de mappage UserMapper
<mapper namespace="userMapper">    
	<insert id="add" parameterType="com.itheima.domain.User">        
		insert into user values(#{id},#{username},#{password})    
	</insert>
</mapper>
  1. Écrivez le code qui insère l'entité User
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new 
                        SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
int insert = sqlSession.insert("userMapper.add", user);
System.out.println(insert);
//提交事务
sqlSession.commit();
sqlSession.close();
  1. Insérer des problèmes d'attention d'opération

  • Les instructions d'insertion utilisent la balise d'insertion

  • Utilisez la propriété parameterType dans le fichier de mappage pour spécifier le type de données à insérer

  • Utilisez #{nom d'attribut d'entité} pour faire référence à la valeur d'attribut dans l'entité dans l'instruction Sql

  • L'API utilisée par l'opération d'insertion est sqlSession.insert("namespace.id", objet entité) ;

  • L'opération d'insertion implique des modifications de données de base de données, utilisez donc la transaction de validation affichée par l'objet sqlSession, c'est-à-dire sqlSession.commit()

4.2 Opération de modification des données MyBatis

  1. Écrire le fichier de mappage UserMapper
<mapper namespace="userMapper">
    <update id="update" parameterType="com.itheima.domain.User">
        update user set username=#{username},password=#{password} where id=#{id}
    </update>
</mapper>

  1. Ecrire le code qui modifie l'entité User
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
int update = sqlSession.update("userMapper.update", user);
System.out.println(update);
sqlSession.commit();
sqlSession.close();
  1. Modifier le problème d'attention d'opération

  • Modifier les déclarations à l'aide de la balise de mise à jour

  • L'API utilisée par l'opération de modification est sqlSession.update("namespace.id", objet entité) ;

4.3 Opération de suppression de données MyBatis

  1. Écrire le fichier de mappage UserMapper
<mapper namespace="userMapper">
    <delete id="delete" parameterType="java.lang.Integer">
        delete from user where id=#{id}
    </delete>
</mapper>

  1. Écrire du code pour supprimer des données
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
int delete = sqlSession.delete("userMapper.delete",3);
System.out.println(delete);
sqlSession.commit();
sqlSession.close();
  1. Remarque sur la suppression

  • Pour supprimer des déclarations, utilisez la balise delete

  • Utilisez #{any string} pour faire référence à un seul paramètre passé dans l'instruction Sql

  • L'API utilisée par l'opération de suppression est sqlSession.delete("namespace.id", Object);

Résumé des connaissances

增删改查映射配置与API:
查询数据: List<User> userList = sqlSession.selectList("userMapper.findAll");
    <select id="findAll" resultType="com.itheima.domain.User">
        select * from User
    </select>
添加数据: sqlSession.insert("userMapper.add", user);
    <insert id="add" parameterType="com.itheima.domain.User">
        insert into user values(#{id},#{username},#{password})
    </insert>
修改数据: sqlSession.update("userMapper.update", user);
    <update id="update" parameterType="com.itheima.domain.User">
        update user set username=#{username},password=#{password} where id=#{id}
    </update>
删除数据:sqlSession.delete("userMapper.delete",3);
    <delete id="delete" parameterType="java.lang.Integer">
        delete from user where id=#{id}
    </delete>

5. Présentation des fichiers de configuration de base de MyBatis

5.1 Hiérarchie des fichiers de configuration du noyau MyBatis

insérez la description de l'image ici

5.2 Analyse de la configuration commune MyBatis

  1. onglet environnements
    insérez la description de l'image ici
    Parmi eux, il existe deux types de gestionnaires de transactions :
  • JDBC : cette configuration utilise directement les paramètres de validation et de restauration de JDBC, en s'appuyant sur les connexions de la source de données pour gérer la portée de la transaction.

  • MANAGED : Cette configuration ne fait presque rien. Il ne valide ou n'annule jamais une connexion, mais laisse le conteneur gérer l'intégralité du cycle de vie de la transaction (par exemple, le contexte d'un serveur d'application JEE). Par défaut, il ferme la connexion, mais certains conteneurs ne le souhaitent pas, alors définissez la propriété closeConnection sur false pour empêcher son comportement de fermeture par défaut.

  Parmi elles, il existe trois types de sources de données :

  • UNPOOLED : l'implémentation de cette source de données ouvre et ferme simplement la connexion à chaque fois qu'elle est demandée.

  • POOLED : cette implémentation de source de données utilise le concept de "pool" pour organiser les objets de connexion JDBC.

  • JNDI : cette source de données est implémentée pour être utilisée dans des conteneurs tels que des EJB ou des serveurs d'applications, qui peuvent configurer la source de données de manière centralisée ou externe, puis placer une référence au contexte JNDI.

  1. balise de mappage
该标签的作用是加载映射的,加载方式有如下几种:

•使用相对于类路径的资源引用,例如:
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>

•使用完全限定资源定位符(URL),例如:
<mapper url="file:///var/mappers/AuthorMapper.xml"/>

•使用映射器接口实现类的完全限定类名,例如:
<mapper class="org.mybatis.builder.AuthorMapper"/>

•将包内的映射器接口实现全部注册为映射器,例如:
<package name="org.mybatis.builder"/>
  1. Onglet Propriétés

  Dans le développement réel, il est courant d'extraire les informations de configuration de la source de données dans un fichier de propriétés, qui peut charger des fichiers de propriétés configurés supplémentaires
insérez la description de l'image ici
4)balise typeAliases
insérez la description de l'image ici
insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/S_yyuan/article/details/124124670
conseillé
Classement