[MyBatis] Adiciones, eliminaciones, modificaciones y uso de archivos de configuración de Mybatis

1. Conociendo MyBatis por primera vez

Sitio web oficial de MyBatis: Sitio web oficial de MyBatis
1. Qué es MyBatis
MyBatis es un marco de capa de persistencia que admite consultas sql comunes, procedimientos almacenados y mapeo avanzado El marco de MyBatis también se conoce como ORM (Object/Relational Mapping, mapeo objeto-relacional) ) marco .

La función principal de ORM es utilizar métodos orientados a objetos para operar objetos persistentes en la programación y hacer corresponder conceptos orientados a objetos con tablas en la base de datos.
inserte la descripción de la imagen aquí

Tome una castaña: defino una clase, que corresponde a una tabla en la base de datos en este momento, y una instancia de este objeto corresponde a un registro en la tabla.

Conceptos Java concepto de base de datos
amable superficie
Atributos campo/columna
objeto registro/línea

2. Características
(1) Programación liviana, de excelente rendimiento y orientada a la interfaz
(2) Separación de los códigos comerciales sql y Java
(3) XML o anotaciones se pueden usar para la configuración y el mapeo
3. La programación orientada a la interfaz de MyBatis es consistente con dos :
(1) El espacio de nombres del archivo de mapeo debe ser consistente con el nombre de clase completo de la interfaz del mapeador
(2) La identificación de la instrucción SQL en el archivo de mapeo debe ser consistente con el nombre del método en la interfaz del mapeador
inserte la descripción de la imagen aquí
4. Proceso de ejecución de el marco de Mybatis
(1) Leer el archivo de configuración de mybatis;
(2) Cargar el archivo de mapeo xxxMapper.xml;
(3) Construir la fábrica de sesiones SqlSessionFactory;
(4) Construir el objeto de sesión SqlSession;
(5) Ejecutor, realizar operaciones relacionadas;
(6) objeto MappedStatement,
(7) mapeo de entrada,
(8) mapeo de salida;

@Test
public void insertUser() throws Exception {
    
    
    // 1.读取配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    // 2.根据配置文件构建SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    // 3.通过sqlSessionFactory创建SqlSession
    //SqlSession默认不自动提交事务,若需要自动提交,需要设置sqlSessionFactory.openSession(true)即可自动提交
    SqlSession session = sqlSessionFactory.openSession(true);
    // 4.使用SqlSession对象执行映射文件中定义的sql,并返回映射结果
    // 4.1获取mapper接口对象
    UserMapper userMapper = session.getMapper(UserMapper.class);
    // 4.2测试功能
    int result = userMapper.insertUser();
    // 4.3提交事务
    //session.commit();
    // 4.4输出结果
    System.out.println("result="+result);
    //5.关闭SqlSession
    session.close();
}

5. El nivel del registro log4j es
FATAL (fatal) > ERROR (error) > WARN (advertencia) > INFO (información) > DEBUG (depuración) y
la información impresa de izquierda a derecha se vuelve cada vez más detallada.
6. Cuatro métodos de importación de archivos de mapeo de mapeador

<!-- 配置映射文件:用来配置sql语句和结果集类型等 -->
<!--1.使用类路径引入-->
<mappers>
    <mapper resource="com/jd/wds/mappers/ParameterMapper.xml"/>
</mappers>
<!--2.使用本地文件路径引入-->
<mappers>
    <mapper url="file:\\\E:\Spring\Mbatis\mybatis-demo02\src\main\resources\com\jd\wds\mappers\ParameterMapper.xml"/>
</mappers>
<!--3.使用接口类引入-->
<mappers>
    <mapper class="com.jd.wds.mappers.ParameterMapper"/>
</mappers>
<!--4.使用包名引入-->
<mappers>
    <package name="com.jd.wds.mappers"/>
</mappers>

2. Instrucciones de desarrollo de Mybatis

1. Dependencias que deben introducirse

<!-- mybatis依赖 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.0</version>
</dependency>
<!-- MySQL数据库依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>
<!--Junit单元测试依赖-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>
<!--log4j日志管理-->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

2. La etiqueta de la función de consulta debe establecerse en resultType o resultMap
resultType: establezca la relación de asignación predeterminada (el nombre del campo y el nombre del atributo son consistentes)
resultMap: establezca la relación de asignación personalizada (el nombre del campo y el nombre del atributo son inconsistentes, muchos a mapeo uno, uno a muchos)
3. Agregar, eliminar, modificar y consultar operaciones en la tabla de usuarios (UserMapper.xml)

<!--1.插入一条记录-->
<insert id="insertUser">
 insert into user values(null,"小王","男",17,"[email protected]")
</insert>
<!--2.删除一条记录-->
<delete id="deleteUser">
delete from user where id = #{id}
</delete>
<!--3.修改一条记录-->
<update id="updateUserById">
update user set name = "小张" where id = #{id}
</update>
<!--4.查询一条记录-->
<select id="findUserById" resultType="com.jd.wds.pojo.User" >
select * from user where id = #{id}
</select>
<!--5.查询所有记录-->
<select id="findAllUser" resultType="com.jd.wds.pojo.User">
select * from user
</select>

4. Descripción del archivo de configuración principal de mybatis mybatis-config.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>
    <!-- 1.引入外部资源文件 -->
    <properties resource="jdbc.properties"></properties>
    <!-- 2.设置驼峰匹配 -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <!-- 3.设置包扫描(别名) -->
    <typeAliases>
        <package name="cn.itcast.pojo"/>
    </typeAliases>
    <!-- 4.配置环境:可以配置多个环境,default:配置某一个环境的唯一标识,表示默认使用哪个环境 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!-- 配置连接信息 -->
                <property name="driver" value="${jdbc.driverClass}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 5.配置映射文件:用来配置sql语句和结果集类型等 -->
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

3. Mybatis obtiene los valores de los parámetros de dos formas

Mybatis tiene dos formas de obtener los valores de los parámetros: #{} y ${} #{} Essence: ¿Marcador de posición
? puede ser Obtener el valor del parámetro con cualquier nombre a través de #{} y ${} (${} necesita agregar comillas simples)

<select id="findUserByName" resultType="com.jd.wds.pojo.User">
    select * from user where name = '${name}'
    <!--select * from user where name = #{name}-->
</select>

(2) Cuando haya varios parámetros del método de interfaz del mapeador, guárdelos de dos maneras:
① use 0, 1... como clave y use el parámetro como valor;
② use param1, param2 como clave y use el parámetro como el valor;
en este momento, solo use {arg0} o {param1} para acceder al valor (${} necesita agregar comillas simples)

<select id="checkLogin" resultType="com.jd.wds.pojo.User">
    select * from user where username=#{0} and password=#{1}
    <!--select * from user where username='${param1}' and password='${param2}'-->
</select>

(3) Cuando hay varios parámetros del método de interfaz del mapeador, estos parámetros se pueden almacenar manualmente en una colección de mapas y solo es necesario acceder al valor en forma de clave a través de #{} y ${} ( ${} hay que añadir apóstrofo)

<select id="checkLoginByMap" resultType="com.jd.wds.pojo.User">
    <!--select * from user where username = #{username} and password = #{password}-->
    select * from user where username = '${username}' and password = '${password}'
</select>
@Test
public void checkLoginByMap(){
    
    
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    ParameterMapper parameterMapper = sqlSession.getMapper(ParameterMapper.class);
    Map<String, Object> hashMap = new HashMap<>();
    hashMap.put("username","小张");
    hashMap.put("password","2356");
    User user = parameterMapper.checkLoginByMap(hashMap);
    System.out.println(user);
}

(4) Los parámetros del método de interfaz del mapeador son parámetros del tipo de entidad, y solo necesitan acceder al valor del atributo a través de #{} o ${} (se debe agregar ${} con comillas simples)

<insert id="insertUser" >
    <!--insert into user values(null,#{username},#{password},#{age},#{email})-->
    insert into user values(null,'${username}','${password}','${age}','${email}')
</insert>

(5) Use la anotación @Param para nombrar los parámetros. En este momento, mybatis pondrá estos parámetros en una colección de mapas y los almacenará de dos maneras: ①
Use el valor de la anotación @param como clave y el parámetro como value;
② Use param1, param2... es la clave, y el parámetro es el valor;
en este momento, solo necesita usar {arg0} o {param1} para acceder al valor (${} debe estar encerrado en comillas simples)

User checkLoginByParam(@Param("username")String username,@Param("password") String password);
<select id="checkLoginByParam" resultType="com.jd.wds.pojo.User">
    <!--select * from user where username = #{username} and password = #{password}-->
    select * from user where username = #{param1} and password = #{param2}
</select>

Supongo que te gusta

Origin blog.csdn.net/weixin_46081857/article/details/123286914
Recomendado
Clasificación