MyBatis (3)

1.
Archivo de configuración relacionado con MyBatis

1.1. Archivo de configuración del núcleo de MyBatis 1.1.1. Nombre: podemos definirlo nosotros mismos, se recomienda que utilice ** [mybatis-config.xml] **
1.1.2. Ubicación
creada por Maven en Los proyectos de IntelliJ IDEA generalmente se almacenan en el directorio src / main / resources.
1.1.3. Elementos de configuración y sus atributos en el archivo
Por ejemplo:

<?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>
    <!-- 配置引入数据库链接字符串的资源文件 -->
    <properties resource="mydata.properties"></properties>
    <!-- 配置mybatis默认的连接数据库的环境 -->
    <environments default="development">
        <environment id="development">
            <!-- 配置事务管理器 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="${mydriver}"/>
                <property name="url" value="${myurl}"/>
                <property name="username" value="${myusername}"/>
                <property name="password" value="${mypassword}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--注册数据访问接口-->
        <mapper resource="PersonMapper.xml"></mapper>
    </mappers>
</configuration>

Análisis:
<? Xml version = "1.0" encoding = "UTF-8"?>: Representa el encabezado del archivo xml, lo que indica que el archivo de configuración principal de MyBatis es un archivo xml.
—Importe el formato del archivo de configuración de MyBatis. Podemos definir las etiquetas que aparecieron originalmente en el archivo xml, pero luego de introducir el formato del archivo de configuración de MyBatis, ya no podemos definir las etiquetas en el archivo xml. Solo podemos usar el formato del archivo de configuración de MyBatis para proporcionar un conjunto predeterminado de etiquetas.
—El elemento raíz del archivo de configuración del núcleo de MyBatis proporcionado por el formato del archivo de configuración de MyBatis.
<properties resource="mydata.properties"></properties>El subelemento del elemento de configuración en el archivo de configuración del núcleo de MyBatis introduce el archivo de recursos "xxxx.properties" en el archivo de configuración del núcleo actual. Importado a través del atributo de recursos, el archivo de recursos "xxxx.properties" importado debe colocarse en el directorio src / main / resources. Si el archivo de recursos importado "xxxx.properties" se coloca en una subcarpeta del directorio src / main / resources, deberíamos "nombre de subcarpeta \ xxxx.properties".
Por ejemplo:
—El elemento de configuración en el archivo de configuración del núcleo de MyBatis El niño elemento de define el entorno de conexión de la base de datos para configurar MyBatis. atributo predeterminado: el valor predeterminado es desarrollo.
—Es el subelemento de entorno, que especifica los valores de configuración del entorno de conexión de base de datos específico.
Especifica el administrador de transacciones del entorno de conexión de la base de datos. Tiene un atributo de tipo y el valor de este atributo determina quién operará la gestión de transacciones.
JDBC: esta configuración utiliza directamente la configuración de confirmación y reversión de JDBC, y se basa en la conexión obtenida de la fuente de datos para administrar el alcance de la transacción.
ADMINISTRADO -Esta configuración no hace casi nada. Nunca confirma ni revierte una conexión, pero permite que el contenedor administre todo el ciclo de vida de la transacción (como el contexto de un servidor de aplicaciones JEE). De forma predeterminada, cerrará la conexión, pero algunos contenedores no quieren esto, por lo que debe establecer la propiedad closeConnection en false para evitar su comportamiento de cierre predeterminado.

<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

NOTA -Si está utilizando Spring + MyBatis, no es necesario configurar el administrador de transacciones, porque el módulo Spring usará su propio administrador para anular la configuración anterior.

<dataSource type="POOLED">
     <property name="driver" value="${mydriver}"/>
     <property name="url" value="${myurl}"/>
     <property name="username" value="${myusername}"/>
     <property name="password" value="${mypassword}"/>
</dataSource>
<dataSource  type="POOLED"></dataSource>


—Especifique la configuración de la fuente de datos del entorno de conexión de la base de datos [controlador de la base de datos, URL, nombre de usuario, contraseña]. El elemento dataSource tiene un tipo de datos y la configuración especifica si se debe usar la tecnología del grupo de conexiones de la base de datos.
UNPOOLED -La implementación de esta fuente de datos simplemente abre y cierra la conexión cada vez que se solicita. Aunque es un poco lento, es una buena opción para aplicaciones simples que no tienen requisitos de rendimiento en términos de conexiones disponibles oportunas. Las diferentes bases de datos funcionan de manera diferente a este respecto, por lo que no es importante usar grupos de conexiones para algunas bases de datos, y esta configuración también es ideal.
POOLED -La realización de esta fuente de datos utiliza el concepto de "pool" para organizar los objetos de conexión JDBC, evitando el tiempo de inicialización y autenticación necesario para crear una nueva instancia de conexión. Este es un método de procesamiento popular que permite que las aplicaciones web concurrentes respondan rápidamente a las solicitudes.
JNDI -Esta fuente de datos se implementa para ser utilizada en contenedores como EJB o servidores de aplicaciones, el contenedor puede configurar la fuente de datos de manera central o externa, y luego colocar una referencia al contexto JNDI.
—Configure la ruta / dirección del archivo de mapeo sql correspondiente a la interfaz de acceso a datos.
Configuración específica:
1. Modifique la estructura del proyecto y cree un paquete que guarde el archivo de mapeo SQL en src / main / resources
Inserte la descripción de la imagen aquí

2. Agregar archivo de mapeo SQL
Inserte la descripción de la imagen aquí

3. Agregue la ruta de asignación de SQL al archivo de configuración principal

<mappers>
        <mapper resource="com/wangxing/mybatis/mapper/PersonMapper.xml"/>
</mappers>

4. Cierre el proyecto y vuelva a abrirlo.

<mappers>
        <package name="com.wangxing.mybatis.mapper"/>
</mappers>

Puede cargar todos los archivos de mapeo SQL en todo el paquete.

<mappers>
        <mapper class="com.wangxing.mybatis.mapper.PersonMapper"></mapper>
</mappers>
<mappers>
        <mapper url="file:///F:/20200728/MyBatis/PersonMapper.xml"></mapper>
</mappers>

1.2 Archivo de mapeo de SQL Mapper [archivo]
1.2.1. [Nombre del nombre de la interfaz de acceso a datos como el sufijo ".xml"]
1.2.2 Posición
1. Con los mismos archivos de configuración principal en src / main / resources
Archivo de configuración principal :
2. En la subcarpeta bajo src / main / resources
Archivo de configuración del núcleo:
3. [Reiniciar]
Archivo de configuración del núcleo en el paquete creado modificando la estructura del proyecto en src / main / resources :

<mapper resource="com/wangxing/mybatis/mapper/PersonMapper.xml"/>
<package name="com.wangxing.mybatis.mapper"/>
<mapper class="com.wangxing.mybatis.mapper.PersonMapper"></mapper>

4. No en el proyecto, sino en el directorio especificado
Archivo de configuración principal:

1.2.3. Elementos de configuración y atributos en el archivo
Por ejemplo:

<?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">
<mapper namespace="com.wangxing.mybatis.mapper.PersonMapper">
    <insert id="insertPerson" parameterType="com.wangxing.mybatis.bean.Person">
        insert into t_person values (null,#{pername},#{perage},#{peraddress});
    </insert>
    <update id="updatePerson" parameterType="com.wangxing.mybatis.bean.Person">
        update t_person set per_name=#{pername},per_age=#{perage},per_address=#{peraddress} where per_id=#{perid};
    </update>
    <resultMap id="personMap" type="com.wangxing.mybatis.bean.Person">
        <id column="per_id" property="perid"></id>
        <result column="per_name" property="pername"></result>
        <result column="per_age" property="perage"></result>
        <result column="per_address" property="peraddress"></result>
    </resultMap>
    <select id="selectPersonById" parameterType="int" resultMap="personMap">
        select * from  t_person where per_id=#{perid};
    </select>
    <select id="selectPerson" resultMap="personMap">
        select * from  t_person;
    </select>
    <delete id="deletePersonById" parameterType="java.lang.Integer">
        delete from t_person where per_id=#{perid};
    </delete>
</mapper>

Análisis: el
<?xml version="1.0" encoding="UTF-8"?>encabezado del archivo xml, que indica que el archivo de configuración principal de MyBatis es un archivo xml.

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

-Introducir el formato del archivo de mapeo SQL. Podemos definir las etiquetas que aparecieron originalmente en el archivo xml, pero después de introducir el formato del archivo de mapeo SQL, ya no podemos definir las etiquetas en el archivo xml. Solo podemos usar el formato del archivo de mapeo SQL para proporcionar un conjunto predeterminado de etiquetas.
<mapper namespace="com.wangxing.mybatis.mapper.PersonMapper">El elemento raíz del archivo de mapeo -sql tiene un atributo de espacio de nombres, que se utiliza para establecer el nombre del paquete + el nombre de la interfaz de la interfaz de acceso a datos.

<insert id="insertPerson" parameterType="com.wangxing.mybatis.bean.Person">
        insert into t_person values (null,#{pername},#{perage},#{peraddress});

---- Configure el
identificador de la instrucción sql que se usa para insertar datos: el nombre del método para agregar datos al
parámetro de la interfaz de acceso a datos Tipo ---- El tipo de parámetro para agregar el método de datos a la interfaz de acceso a datos
1.Tipo de PoJo [tipo de objeto] com.wangxing. mybatis.bean.Person
2. Tipo básico [Cadena, tipo básico, tipo de paquete]
Cadena — java.lang.String
tipo básico — int, booleano ...
Clase de paquete — java.lang.Ingeter
3. Tipo de colección [lista, mapa hash】

 <update id="updatePerson" parameterType="com.wangxing.mybatis.bean.Person">
        update t_person set per_name=#{pername},per_age=#{perage},per_address=#{peraddress} where per_id=#{perid};
</update>----配置修改数据用的sql语句

id: el nombre del método para modificar los datos en la
interfaz de acceso a datos parameterType: el tipo de parámetro del método para modificar los datos en la interfaz de acceso a datos 1.
Tipo de PoJo [tipo de objeto] com.wangxing.mybatis.bean.Person
2. tipo básico [Cadena, tipo básico, tipo de paquete]
Cadena: java.lang.String
tipo básico: int, booleano ...
Tipo de paquete: java.lang.Ingeter
3. Tipo de colección [lista, mapa hash]

eliminar de t_person donde per_id = # {perid};
—Configura la identificación de la declaración SQL
utilizada para eliminar datos — el nombre del método para eliminar datos en la
interfaz de acceso a datos parameterType ---- El tipo de parámetro del método para eliminar datos en la interfaz de acceso a datos
1.Tipo PoJo [tipo de objeto] com.wangxing. Mybatis.bean.Person
2. Tipo básico [Cadena, tipo básico, tipo de paquete]
Cadena — java.lang.String
tipo básico — int, booleano ...
Clase de paquete — java .lang.Ingeter
3. Tipo de colección [list, hashMap】

select * from t_person donde per_id = # {perid};
---- Configure el
id de la instrucción sql usado para consultar los datos — el nombre del método del método de datos de consulta en el interfaz de acceso a datos
parameterType ---- El tipo de parámetro del método de consulta de datos en la interfaz de acceso a datos 1.
Tipo de PoJo [tipo de objeto] com.wangxing.mybatis.bean.Person
2. Tipo básico [Cadena, tipo básico, tipo de paquete]
Cadena— java.lang .String
basic type — int, boolean ...
package class — java.lang.Ingeter
3. Tipo de colección [list, hashMap]
resultMap — elemento de configuración del tipo de resultado de la consulta [nombre de columna en la tabla de la base de datos y clase de entidad El nombre de la variable miembro es diferente]
resultType: configure el tipo de resultado de la consulta. [El nombre de la columna en la tabla de la base de datos es el mismo que el nombre de la variable miembro en la clase de entidad]

 <resultMap id="personMap" type="com.wangxing.mybatis.bean.Person">
        <id column="per_id" property="perid"></id>
        <result column="per_name" property="pername"></result>
        <result column="per_age" property="perage"></result>
        <result column="per_address" property="peraddress"></result>
  </resultMap>

id atributo: el nombre del tipo de resultado de la consulta, que en realidad es el valor de atributo del resultMap en el elemento de selección.
tipo atributo: el tipo específico del resultado de la consulta [nombre de clase de la clase de entidad java]
Hay actualmente 2 tipos de subelementos en el elemento resultMap
—configurar el mapeo de la columna de la clave principal
—Configurar la
propiedad de la columna de mapeo de la columna de la clave no principal — el nombre de la columna de la
propiedad de la tabla de la base de datos — el nombre de la variable miembro de la entidad java clase.
2. ¿Cuál es la función del elemento typeAliases en el archivo de configuración central de MyBatis, cómo configurarlo y cómo usarlo?
typeAliases element-aparece en el archivo de configuración central de MyBatis y se usa para establecer alias para el tipo de datos del archivo de mapeo SQL. El tipo de datos del archivo de mapeo SQL, el tipo de parámetro del elemento de inserción y el atributo de tipos del elemento resultMap requieren tipos de datos. Si no configuramos el elemento typeAliases, el tipo de datos del archivo de mapeo SQL debe ser el nombre del paquete + el nombre de la clase.
1. Un alias para una clase [alias predeterminado]
El archivo de configuración principal de MyBatis

<typeAliases>
    <!--默认的别名 [类名,不区分大小写]-->
    <typeAlias type="com.wangxing.mybatis.bean.Person"></typeAlias>
</typeAliases>
Sql映射文件
<insert id="insertPerson" parameterType="Person">
    insert into t_person values (null,#{pername},#{perage},#{peraddress});
</insert>
<update id="updatePerson" parameterType="person">
    update t_person set per_name=#{pername},per_age=#{perage},per_address=#{peraddress} where per_id=#{perid};
</update>

2. Un alias para una clase [especificar alias]

<typeAliases>
    <typeAlias alias="personBean" type="com.wangxing.mybatis.bean.Person"></typeAlias>
</typeAliases>

Archivo de mapeo SQL

<resultMap id="personMap" type="personBean">
    <id column="per_id" property="perid"></id>
    <result column="per_name" property="pername"></result>
    <result column="per_age" property="perage"></result>
    <result column="per_address" property="peraddress"></result>
</resultMap>
<select id="selectPersonById" parameterType="int" resultMap="personMap">
    select * from  t_person where per_id=#{perid};
</select>

3. Genere automáticamente alias para todas las clases en el paquete especificado [nombre de clase, no distingue entre mayúsculas y minúsculas]

<typeAliases>
    <!--指定包下的所有类自动生成别名【类名,不区分大小写】-->
    <package name="com.wangxing.mybatis.bean"/>
</typeAliases>
SQL映射文件
<insert id="insertPerson" parameterType="Person">
    insert into t_person values (null,#{pername},#{perage},#{peraddress});
</insert>
<update id="updatePerson" parameterType="person">
    update t_person set per_name=#{pername},per_age=#{perage},per_address=#{peraddress} where per_id=#{perid};
</update>

3. ¿Cuál es la diferencia entre el elemento de selección resultType y los atributos resultMap en el archivo de mapeo Sql? [Los datos de salida son el valor de retorno]
resultType / resultMap son los atributos de representación de tipo del resultado devuelto después de que se ejecuta la declaración de consulta. El resultType
se utilizará en el elemento de selección en el archivo de mapeo sql para
indicar el tipo de datos del resultado devuelto después de que se realiza la operación de la base de datos.
Este resultado se puede procesar con tres tipos de datos:
1. Tipo simple. Por ejemplo: cadena, largo, entero, doble, etc.
2, tipo pojo. Por ejemplo: Persona, Usuario, etc.
3. Tipo HashMap.
Cuando el nombre de la columna en la tabla de la base de datos es el mismo que el nombre de la variable miembro en la clase de entidad, resultType generalmente se establece para especificar el tipo de datos de resultado devuelto.
Tabla de base de datos

create  table t_person(
per_id int primary key auto_increment,
per_name varchar(20),
per_age int,
per_address varchar(30)
);

package com.wangxing.mybatis.bean;

public class Person {
    private int per_id;
    private String per_name;
    private int per_age;
    private String per_address;
........
getXXX()、setXXX()
}

Interfaz de acceso a datos

import com.wangxing.mybatis.bean.Person;
import java.util.List;
public interface PersonMapper {
    /**
     * 查询所有数据
     * @return
     */
    List<Person> selectPerson();
}

Archivo de mapeo SQL

<?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">
<mapper namespace="com.wangxing.mybatis.mapper.PersonMapper">
    <select id="selectPerson" resultType="com.wangxing.mybatis.bean.Person">
        select * from  t_person;
    </select>
</mapper>

ResultMap representa el tipo de datos de resultado devueltos después de que se realiza la operación de la base de datos.
ResultMap es el elemento más importante y poderoso de mybatis El uso de resultmap puede resolver 2 problemas:
1. El problema de la inconsistencia entre los nombres de los atributos de JavaBean y los nombres de los campos de la tabla.
Tabla de base de datos

create  table t_person(
per_id int primary key auto_increment,
per_name varchar(20),
per_age int,
per_address varchar(30)
);

package com.wangxing.mybatis.bean;

public class Person {
    private int perid;
    private String pername;
    private int perage;
    private String peraddress;
........
getXXX()、setXXX()
}

Interfaz de acceso a datos

import com.wangxing.mybatis.bean.Person;
import java.util.List;
public interface PersonMapper {
    /**
     * 查询所有数据
     * @return
     */
    List<Person> selectPerson();
}

Archivo de mapeo SQL

<?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">
<mapper namespace="com.wangxing.mybatis.mapper.PersonMapper">
    <resultMap id="personMap" type="com.wangxing.mybatis.bean.Person">
        <id column="per_id" property="perid"></id>
        <result column="per_name" property="pername"></result>
        <result column="per_age" property="perage"></result>
        <result column="per_address" property="peraddress"></result>
    </resultMap>
    <select id="selectPerson" resultMap="personMap">
        select * from  t_person;
    </select>
</mapper>

Supongo que te gusta

Origin blog.csdn.net/guoguo0717/article/details/109536739
Recomendado
Clasificación