MyBatis-01-01-MyBatis Framework Overview & Simple Implementation Demo


Présentation de MyBatis

  • MyBatis était à l'origine un projet open source iBatis d'Apache
  • En 2010, le projet a été migré de la fondation logicielle Apache vers Google Code, et a été renommé MyBatis
  • Migré vers GitHub en novembre 2013
  • MyBatis est un framework de persistance qui prend en charge les requêtes SQL personnalisées, les procédures stockées et le mappage avancé
  • Par rapport au développement JDBC traditionnel, MyBatis élimine presque tous les réglages manuels des codes et des paramètres
  • MyBatis est un framework ORM
  • MyBatis peut utiliser du XML ou des annotations pour la configuration et le mappage, c'est Classes d'entité et instructions SQL Une relation de mappage est établie entre, et Hibernate est enClasses d'entité et tables de base de donnéesÉtabli une relation de mappage entre.

Hibernate et MyBatis sont à la fois des frameworks de persistance et des frameworks ORM. Tous simplifient les opérations de persistance.

Tous les programmes finalement générés par MyBatis sont générés manuellement par les programmeurs.


Fichier de configuration XML de base MyBatis

Le fichier de configuration XML (configuration XML) contient les paramètres de base du système MyBatis, y compris la source de données (DataSource) pour obtenir les instances de connexion à la base de données et le gestionnaire de transactions (TransactionManager) qui détermine la portée et la méthode de contrôle de la transaction.

<?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> 
    <settings>
    	全局参数的设置
        打印SQL语句
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
	多个数据源环境配置
    <environments default="development"> 
        <environment id="development"> 
         	事务和数据源 
        </environment>
    </environments> 
</configuration>

Insérez la description de l'image ici

Insérez la description de l'image ici

        <environment id="development"> 
            <!-- 事务管理器类型 -->
            <transactionManager type="JDBC"/>
			<!-- 数据源选择从数据库连接池获得对象 -->
		    <dataSource type="POOLED">
		        <property name="driver" value="com.mysql.jdbc.Driver"/>
		        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
		        <property name="username" value="root"/>
		        <property name="password" value=""/>
		    </dataSource> 
        </environment>

Insérez la description de l'image ici

Choisir Géré signifie qu'il est géré par le conteneur.
Après avoir utilisé Spring, vous pouvez utiliser les types suivants

Insérez la description de l'image ici
non poolé: pas de pool de connexion à la base de données, chaque fois qu'un nouveau lien est créé
poolé: pool de connexion à la base de données, utilisez le lien
jndi du pool de liens de base de données :

  • UNPOLED: La mise en œuvre de cette source de données consiste simplement à ouvrir et fermer la connexion chaque fois qu'elle est demandée. Il est un peu lent, ce qui est un bon choix pour les applications simples, car il ne nécessite pas une connexion disponible en temps opportun.

  • POOLED: il s'agit de l'implémentation du pool de connexions à la source de données de l'objet de connexion JDBC, qui est utilisé pour éviter la connexion initiale et le temps d'authentification nécessaires lors de la création d'une nouvelle instance de connexion. Il s'agit d'une méthode populaire utilisée par les applications Web actuelles pour répondre rapidement aux demandes

  • JNDI: cette source de données est implémentée pour utiliser des conteneurs tels que Spring ou des serveurs d'applications. Le conteneur peut configurer la source de données de manière centralisée ou externe, puis placer une référence au contexte JNDI.

Insérez la description de l'image ici

<?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">
    
    <!-- SQL映射文件的配置 -->
    <!-- nameSpace=映射空间。唯一标识的字符串-->
    <mapper namespace="com.mybatis.mapper.UserMapper">
	    <select id="selectAllUsers"    
	            resultType="com.mybatis.entity.User">
	        select * from user
	    </select>
	</mapper>

Insérez la description de l'image ici


La hiérarchie de classes principale de MyBatis

Insérez la description de l'image ici
SqlSessionFactory: peut créer un exécuteur de classe d'usine Seiion
: génération d'instruction dynamique et maintenance du cache

Tableau de comparaison des types de données Java et des types de données jdbc https://blog.csdn.net/qq_43517117/article/details/86551215

Insérez la description de l'image ici

Insérez la description de l'image ici

public class MyBatisUtil {
    
    
    private static SqlSessionFactory factory;
    
    //第一次加载时自动执行
    static {
    
    
        try {
    
    
        //参数:主配置文件的文件名。默认路径resources文件目录
            InputStream is = Resources.getResourceAsStream("mybatis.xml");
            factory = new SqlSessionFactoryBuilder().build(is);
            is.close();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
    
    public static SqlSession openSqlSession() {
    
    
        return factory.openSession();
    }
}

Le premier programme MyBatis

Manuel

Structure du projet

Insérez la description de l'image ici

  1. Créer un projet Java

  2. Importez le package jar requis par MyBatis
    Insérez la description de l'image ici

    L'un est que MyBatis doit être emballé. L'un est le package de pilotes MySql.

  3. Créer des classes d'entité et une interface de mappage (DAO)
    Insérez la description de l'image ici

Insérez la description de l'image ici

user.java

package com.mybatis.entity;

public class User {
    
    

	private Integer id;
	private String userName;
	private String password;
	
	
	public Integer getId() {
    
    
		return id;
	}
	public void setId(Integer id) {
    
    
		this.id = id;
	}
	public String getUserName() {
    
    
		return userName;
	}
	public void setUserName(String userName) {
    
    
		this.userName = userName;
	}
	public String getPassword() {
    
    
		return password;
	}
	public void setPassword(String password) {
    
    
		this.password = password;
	}
	
	
	@Override
	public String toString() {
    
    
		return "User [id=" + id + ", userName=" + userName + ", password=" + password + "]";
	}
	
	
	
}

UserMapper.java

package com.mybatis.mapper;

import java.util.List;

import com.mybatis.entity.User;


//类型是interface ,
//这是映射器接口,定义对持久化对象的增删改查方法
//一个映射器接口对应一个映射文件
public interface UserMapper {
    
    

	List<User> findAllUsers();
}

  1. Créez le fichier de configuration principal mybatis.xml pour MyBatis

    Créez un nouveau dossier source dans le projet et nommez-le resources pour stocker le fichier de configuration principal de MyBatis, et créez un nouveau fichier XML dans les ressources et nommez-le mybatis.xml

MaBatis.xml

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


    <!--全局参数的设置,例如日志的实现类 -->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
    
    
    
	<!--多个数据源环境配置,default:下面定义的标签的id-->
    <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://localhost:3306/database_mybatis?characterEncoding=utf-8"/>
		        <property name="username" value="root"/>
		        <property name="password" value=""/>
		    </dataSource> 
        </environment>
    </environments> 
    
	<!-- SQL映射文件 -->
	<mappers>
		<mapper resource="com/mybatis/mapper/UserMapper.xml"/>
	</mappers>
    
    
</configuration>
  1. Créer un fichier XML de mappage SQL pour MyBatis

    Créez le fichier XML de mappage SQL de MyBatis, et le fichier de mappage doit être dans le même package que l'interface de mappage qui vient d'être créée, et le nom de l'interface de mappage est le même, de sorte que le nom du fichier de mappage est UserMapper.xml

    Remarque: pour associer le fichier de mappage au fichier de configuration principal

UserMapper.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">
    
    
<!-- 映射文件 -->    
<!-- nameSpace为唯一标识,映射器接口的全限定名 -->
<mapper namespace="com.mybatis.mapper.UserMapper">
	
	<!-- select用来映射查询语句
		id=对应的映射器接口的方法名
		resultType同映射接口中该方法的返回值类型一致,或跟返回值中元素类型一致 
		因为没有声明文件位置,所以参数需要输入全部包名-->
	<select id="findAllUsers" resultType="com.mybatis.entity.User">
		select * from mybatis_01_01_user
	</select>
	
	<select id=""></select>
</mapper>
  1. Associez le fichier de mappage SQL au fichier de configuration principal

Insérez la description de l'image ici
Ajouter du code dans le fichier MyBatis.xml
Insérez la description de l'image ici

	<!-- SQL映射文件 -->
	<mappers>
		<mapper resource="com/mybatis/mapper/UserMapper.xml"/>
	</mappers>
  1. Ecrire du code à tester

Insérez la description de l'image ici

Test.java

package com.mybatis.ui;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.mybatis.entity.User;
import com.mybatis.mapper.UserMapper;
import com.mybatis.util.MyBatisUtil;

public class Test {
    
    

	public static void main(String[] args) {
    
    
		System.out.println("=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
		//创建SqlSession对象
		SqlSession session = MyBatisUtil.openSqlSession();
		//映射器接口权限定名+方法名(映射文件的nameSpace的数值+某一条SQL语句映射的id属性的值)
		//方式1,调用SqlSession的方法
		System.out.println("-=---------------------");
		List<User> users = session.selectList("com.mybatis.mapper.UserMapper.findAllUsers");
		System.out.println(users);
		session.close();
	}
}

Insérez la description de l'image ici

Test.java

package com.mybatis.ui;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.mybatis.entity.User;
import com.mybatis.mapper.UserMapper;
import com.mybatis.util.MyBatisUtil;

public class Test {
    
    

	public static void main(String[] args) {
    
    
		//方式2:更推荐
		//参数=映射器接口的类型,
		//返回值=该接口实现类型对象
		SqlSession session = MyBatisUtil.openSqlSession();
		UserMapper userMapper = session.getMapper(UserMapper.class);
		List<User> users = userMapper.findAllUsers();
		System.out.println(users);
		
		System.out.println("----------------------------");
		session.close();
	}
}

Flux de travail SqlSession

Insérez la description de l'image ici
Le fonctionnement de la transaction est mis ici

Insérez la description de l'image ici

L'instruction SQL peut être localisée via l'identifiant unique
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/qq_44627608/article/details/115341805
conseillé
Classement