Répertoire d'articles
- Préface
- 1. Tradition Mybatis et développement des agents
- Deux, fichier de configuration Mybatis
-
- 1. Le fichier de configuration de base SqlMapConfig.xml
-
- 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)
- 1.1.2 balise mapper (le rôle est de charger la carte)
- 1.1.3 Onglet Propriétés
- 1.1.4 balise typeAliases (type aliases, définir un nom court pour le type Java)
- 2. Fichier de configuration de mappage mapper.xml
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
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
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)
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
1.1.4 balise typeAliases (type aliases, définir un nom court pour le type Java)
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>