Múltiples archivos de mapeador y función de espacio de nombres
¿Qué hacer si hay varios archivos de mapeador y para qué sirve el espacio de nombres?
Primero, veamos la creación de una declaración de base de datos:
#创建数据库
CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
#创建数据表
CREATE TABLE `student` ( `id` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR(20) NOT NULL ,
`age` INT NOT NULL , `score` DOUBLE NOT NULL , PRIMARY KEY (`id`)) ENGINE = MyISAM;
Aquí tenemos que volver a explicar el proceso de ejecución de Mybatis: Primero, Resources.getResourceAsStream("mybatis.xml")
leemos mybatis.xml
este archivo. La configuración en este archivo es la configuración relacionada con todo el proyecto y la base de datos, como el entorno de la base de datos cuando se está ejecutando (qué base de datos conectarse a, La dirección, nombre de usuario, contraseña del servidor de la base de datos), o configurar un archivo de configuración externo, etc. Lo más importante es que este archivo se registre con un archivo de mapeo (archivo mapeador) , luego cuando lo usemos SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
, sqlSessionFactory
volver mybatis.xml
y leer el archivo de configuración leído en su interior, y obtendremos el archivo de Mapper
mapeo leído por cada archivo de configuración uno por uno . Cuando usemos la instancia openSession()
obtenida sqlSession
, por ejemplo , cuando la usemos , buscaremos sqlSession.insert("insertStudent",student);
la declaración de configuración sql en cada mapper, que es similar al siguiente:
<mapper namespace="mapper1">
<insert id="insertStudent" parameterType="bean.Student">
insert into student(name,age,score) values(#{name},#{age},#{score})
</insert>
</mapper>
id
Simplemente encuentre el mismo, mucha gente dirá, dado que se usa la distinción id
, ¿para qué es el atributo de espacio de nombres en mi archivo de mapeador?
Cuando tenemos dos o más de lo mismo
id
, debemos usar el espacio de nombres para distinguir, si solo hay unmapper.xml
archivo, entonces podemosnamespace
escribir cualquier cosa, cuando lo usemos, solo necesitamos:sqlSession.insert("insertStudent",student);
está bien, si nuestros identificadores son los mismos, entonces necesitamos para usar:sqlSession.insert("mapper1.insertStudent",student);
agregar al frentenamspace
. De lo contrario, aparecerá el siguiente error, indicándonos que usemos el nombre completo para incluirlonamespace
o redefinirloid
.
En general, oid
son diferentes y se pueden utilizar directamente, oid
son iguales, pero no sonnamespace
iguales, y lasnamespace
diferencian a la hora de utilizarlas . De lo contrario, se informará el siguiente error:
Para varios archivos de mapeador, es necesario registrar dos archivos en el archivo mybatis.xml:
<!-- 注册映射文件 -->
<mappers>
<mapper resource="mapper/mapper1.xml"/>
<mapper resource="mapper/mapper2.xml"/>
</mappers>
Agregue un espacio de nombres cuando use:
Este artículo solo representa mi propio registro de acumulación de estudios (el novato), o notas de estudio; si hay alguna infracción, comuníquese con el autor para eliminarlo. Nadie es perfecto, también lo es el artículo, la escritura es inmadura, no es buena en el siguiente, no rocíe, si hay errores, espero señalar, estoy agradecido ~
El camino hacia la tecnología no está en un momento, las montañas son altas y los ríos son largos, aunque sea lento, no se detendrá.
Número público: supermercado Qinhuai