mybatis informations de base


Préface

Rappelez-vous les informations de base de mybatis


1. Tradition Mybatis et développement des agents

Ecrire l'interface UserDao

public interface UserDao {
    
    
	List<User> findAll() throws IOException;
} 

Ecrire l'implémentation UserDaoImpl

public class UserDaoImpl implements UserDao {
    
    
	public List<User> findAll() throws IOException {
    
    
	InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
	SqlSession sqlSession = sqlSessionFactory.openSession();
	List<User> userList = sqlSession.selectList("userMapper.findAll");
	sqlSession.close();
	return userList;
	}
}

Tester la manière traditionnelle

@Test
public void testTraditionDao() throws IOException {
    
    
	UserDao userDao = new UserDaoImpl();
	List<User> all = userDao.findAll();
	System.out.println(all); 
}

Méthode de développement d'agent: le
framework mybatis crée des objets d'agent dynamiques de l'interface selon la définition de l'interface m, et le corps de méthode de l'objet d'agent est le même que celui de la méthode de classe d'implémentation d'interface Dao ci-dessus.
Le développement de l'interface du mappeur doit suivre les spécifications suivantes:
1. L'espace de noms dans le fichier Mapper.xml est le même que le nom complet de l'interface du mappeur 2. Le
nom de la méthode d'interface du mappeur est le même que l'ID de chaque instruction définie dans
Mapper.xml 3. L'entrée de la méthode d'interface Mapper Le type de paramètre est le même que le parameterType de chaque SQL défini dans
mapper.xml 4. Le type de paramètre de sortie de la méthode d'interface Mapper est le même que le resultType de chaque SQL défini en
Insérez la description de l'image ici
mode proxy de test mapper.xml

@Test
public void testProxyDao() throws IOException {
    
    
	InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
	SqlSession sqlSession = sqlSessionFactory.openSession();
	//获得MyBatis框架⽣成的UserMapper接⼝的实现类
	UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
	User user = userMapper.findById(1);
	System.out.println(user);
	sqlSession.close();
}

Deux, fichier de configuration Mybatis

1. Le fichier de configuration de base SqlMapConfig.xml

Insérez la description de l'image ici

1.1 Analyse de configuration commune

1.1.1 étiquette d'environnement (configuration de l'environnement de base de données, prise en charge de la configuration multi-environnement)

Insérez la description de l'image ici
Parmi eux:
il existe deux types de gestionnaire de transactions (transactionManager):

  • JDBC: cette configuration utilise directement les paramètres de validation et d'annulation de JDBC, qui repose sur la connexion obtenue à partir de la source de données pour gérer le
    domaine de transaction .
  • GÉRÉ: Cette configuration ne fait presque rien. Il ne valide ni ne restaure jamais une connexion, mais permet au conteneur de gérer tout le
    cycle de vie de la transaction (comme le contexte d'un serveur d'applications JEE). Cela fermera la connexion par défaut, mais certains conteneurs ne le souhaitent pas,
    vous devez donc définir la propriété closeConnection sur false pour l'empêcher de fermer le comportement par défaut.

Il existe trois types de dataSource:

  • UNPOOLED: l'implémentation de cette source de données ouvre et ferme simplement la connexion à chaque fois qu'elle est demandée.
  • POOLED: La réalisation de cette 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. 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.

1.1.2 balise mapper (le rôle est de charger la carte)

Méthode de chargement:

•使用相对于类路径的资源引用,例如:
<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.1.3 Onglet Propriétés

Dans le développement réel, il est habituel d'extraire les informations de configuration de la source de données séparément dans un fichier de propriétés, cette balise peut charger un fichier de propriétés de configuration supplémentaire
Insérez la description de l'image ici

1.1.4 balise typeAliases (type aliases, définir un nom court pour le type Java)

! [] (https://img-blog.csdnimg.cn/20210112183132344.png
Le framework mybatis a déjà configuré certains types d'alias couramment utilisés:

Alias Type de cartographie
_octet octet
_longue longue
_court court
_int int
_entier int
_double double
_flotte flotte
_booléen booléen
chaîne Chaîne
octet Octet
longue Longue
court Court
int Entier
entier Entier
double Double
flotte Flotte
booléen Booléen
Date Date
décimal BigDecimal
bigdecimal BigDecimal
objet Objet
carte Carte
hashmap HashMap
liste liste
liste des tableaux Liste des tableaux
collection Collection
itérateur Itérateur

2. Fichier de configuration de mappage mapper.xml

si jugement

<select id="findByCondition" parameterType="user" resultType="user">
	select * from User
	<where>
		<if test="id!=0">
			and id=#{
    
    id}
		</if>
		<if test="username!=null">
			and username=#{
    
    username}
		</if>
	</where>
</select>

Épissage de la boucle SQL

<select id="findByIds" parameterType="list" resultType="user">
	select * from User
	<where>
		<foreach collection="list" open="id in(" close=")" item="id" separator=",">
			#{
    
    id}
		</foreach>
	</where>
</select>

La balise foreach est utilisée pour parcourir la collection:

  • collection: représente les éléments de la collection à parcourir, faites attention à ne pas écrire # {} lors de l'écriture
  • open: représente le début de l'instruction
  • close: représente la partie finale
  • item: représente chaque élément de la collection de parcours, le nom de la variable générée
  • sperator: représente le séparateur

Extraction de fragments SQL
Sql peut extraire le SQL en double, utiliser include pour citer lors de l'utilisation et enfin atteindre l'objectif de réutilisation de SQL.

<!--抽取sql片段简化编写-->
<sql id="selectUser" select * from User</sql>
<select id="findById" parameterType="int" resultType="user">
	<include refid="selectUser"></include> where id=#{
    
    id}
</select>
<select id="findByIds" parameterType="list" resultType="user">
	<include refid="selectUser"></include>
	<where>
		<foreach collection="array" open="id in(" close=")" item="id" separator=",">
			#{
    
    id}
		</foreach>
	</where>
</select>

Je suppose que tu aimes

Origine blog.csdn.net/weixin_39417423/article/details/112541360
conseillé
Classement