En utilisant l'interface Mapper, vous n'avez pas besoin d'écrire une classe d'implémentation d'interface et vous pouvez directement terminer l'opération de base de données, ce qui est simple et pratique. Afin d'aider tout le monde à mieux apprendre l'interface Mapper, l'éditeur a résumé quelques points de connaissances sur l'interface Mapper, dans l'espoir d'aider ceux qui en ont besoin.
Allez d'abord au diagramme de structure :
Voici le code spécifique :
1.User.java
实体类中的的get/set方法以及构造方法及toString方法就不贴了 public class User { private int id; private String name; private int age; }
2. UserMapper.java
C'est l'interface du mappeur, et l'idée de programmation orientée interface est toujours très importante. C’est aussi la partie la plus importante de ce billet de blog.
La définition de l'interface a les caractéristiques suivantes :
Le nom de la méthode de l'interface Mapper a le même nom que l'identifiant de chaque sql défini dans UserMapper .xml.
Le type de paramètre d'entrée de la méthode d'interface Mapper est le même que le type paramètreType de SQL défini dans UserMapper.xml.
Le type de retour de l'interface Mapper est le même que le resultType de SQL défini dans UserMapper.xml
Faites attention à la méthode de création du tableau, Il y a l'annotation @Param
package com.mi.mapper;import org.apache.ibatis.annotations.Param;import com.mi.beans.User;public interface UserMapper { void createTable (@Param("tableName") String tableName); void add(User user); void del(int id); void update(User user); User getUser(int id); User[] list(); }
3. userMappers.xml
Il faut le noter ici
L'espace de noms du fichier 1.xml doit être écrit comme suit.
<mapper namespace="com.mi.mapper.UserMapper">
2 Lors de l'écriture de l'instruction pour créer dynamiquement une table, écrivez ${tableName} au lieu de. #{}. Cliquez pour voir la différence entre les deux
create table ${tableName}...
Ce qui suit est le code complet : y compris la création de table, CRUD
<mapper namespace="com.mi.mapper.UserMapper">create table ${tableName} (id int primary key auto_increment,name varchar(20),age int) insert into t_user(name,age) value(#{name},#{age}) delete from t_user where id = #{id} update t_user set name=#{name},age=#{age} where id=#{id}
4.
Deux choses doivent être configurées ici
Configurer la connexion JDBC
Configurer mapper.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> <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/mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <!-- 注册userMapper.xml文件 --> <mappers> <mapper resource="com/mi/mapping/userMappers.xml"/> </mappers></configuration>
5. SqlSessionUtil.java
J'ai écrit une classe d'outils ici, le but principal est d'obtenir sqlSession, car chaque fois que j'utilise la base de données, je dois écrire encore une fois, donc je l'encapsule une fois.
package com.mi.util;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis. session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class SqlSessionUtil { public static SqlSession getSqlSession() throws Exception{ String resource = "conf.xml"; //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件) InputStream is = Resources.getResourceAsStream(resource); //构建sqlSession的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); //创建能执行映射文件中sql的sqlSession SqlSession sqlSession = sessionFactory.openSession(); return sqlSession; } }
6 MyTest.java
C'est la classe de test, via la classe d'outils ci-dessus sqlSession, la chose la plus importante est. la phrase suivante
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
MyBatis est implémenté via une interface de mappeur de proxy dynamique , il sera facile à gérer après cela, il suffit d'exécuter les méthodes préparées dans l'interface.
Attention à ne pas oublier sqlSession.commit() et sqlSession.close() Sinon, même si aucune erreur ne sera signalée lors de l'exécution, il n'y aura aucun changement dans la base de données.
这里我只执行了创建表的方法. package com.mi.test;import org.apache.ibatis.session.SqlSession;import com.mi.beans.User;import com.mi.mapper.UserMapper; import com.mi.util.SqlSessionUtil;public class MyTest { public static void main(String[] args) throws Exception { SqlSession sqlSession = SqlSessionUtil.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.createTable("t_user"); sqlSession.commit(); sqlSession.close(); } }
La méthode d'utilisation de l'interface Mapper, sans écrire l'interface pour implémenter la classe, complète directement l'opération de la base de données, simple et pratique.
D'abord le schéma de structure :
Ce qui suit est le code spécifique :
1.User.java
实体类中的的get/set方法以及构造方法及toString方法就不贴了public class User { private int id; private String name; private int age;
2 , UserMapper.java C'est l'interface du mappeur, et l'idée de programmation orientée interface est toujours très importante. C’est aussi la partie la plus importante de ce billet de blog.
La définition de l'interface a les caractéristiques suivantes :
Faites attention à la méthode de création du tableau, Il y a l'annotation @Param
package com.mi.mapper;import org.apache.ibatis.annotations.Param;import com.mi.beans.User;public interface UserMapper { void createTable (@Param("tableName") String tableName); void add(User user); void del(int id); void update(User user); User getUser(int id); User[] list(); }
3. userMappers.xml
Il faut le noter ici L'espace de noms du fichier 1.xml doit être écrit comme Le chemin de l'interface du mappeur est le suivant
<mapper namespace="com.mi.mapper.UserMapper">
create table ${tableName}...
<mapper namespace="com.mi.mapper.UserMapper">create table ${tableName} (id int primary key auto_increment,name varchar(20),age int) insert into t_user(name,age) value(#{name},#{age}) delete from t_user where id = #{id} update t_user set name=#{name},age=#{age} where id=#{id}
4. Deux choses doivent être configurées ici
<?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> <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/mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <!-- 注册userMapper.xml文件 --> <mappers> <mapper resource="com/mi/mapping/userMappers.xml"/> </mappers></configuration>
5. SqlSessionUtil.java J'ai écrit une classe d'outils ici, le but principal est d'obtenir sqlSession, car chaque fois que j'utilise la base de données, je dois écrire encore une fois, donc je l'encapsule une fois.
package com.mi.util;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class SqlSessionUtil { public static SqlSession getSqlSession() throws Exception{ String resource = "conf.xml"; //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件) InputStream is = Resources.getResourceAsStream(resource); //构建sqlSession的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); //创建能执行映射文件中sql的sqlSession SqlSession sqlSession = sessionFactory.openSession(); return sqlSession; } }
6 MyTest.java C'est la classe de test, via la classe d'outils ci-dessus sqlSession, la chose la plus importante est. la phrase suivante
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
MyBatis est implémenté via une interface de mappeur de proxy dynamique , il sera facile à gérer après cela, il suffit d'exécuter les méthodes préparées dans l'interface.
Attention à ne pas oublier sqlSession.commit() et sqlSession.close() Sinon, même si aucune erreur ne sera signalée lors de l'exécution, il n'y aura aucun changement dans la base de données.<. 🎜 >
这里我只执行了创建表的方法. package com.mi.test;import org.apache.ibatis.session.SqlSession;import com.mi.beans.User;import com.mi.mapper.UserMapper; import com.mi.util.SqlSessionUtil;public class MyTest { public static void main(String[] args) throws Exception { SqlSession sqlSession = SqlSessionUtil.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.createTable("t_user"); sqlSession.commit(); sqlSession.close(); } }
Spring Boot, Mybatis, Redis créent rapidement des projets Web modernes
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!