información básica de mybatis


Prefacio

Recuerda la información básica de mybatis


1. Tradición mybatis y desarrollo de agentes

Escribir interfaz UserDao

public interface UserDao {
    
    
	List<User> findAll() throws IOException;
} 

Escribir implementación de 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;
	}
}

Probando la forma tradicional

@Test
public void testTraditionDao() throws IOException {
    
    
	UserDao userDao = new UserDaoImpl();
	List<User> all = userDao.findAll();
	System.out.println(all); 
}

Método de desarrollo del agente: el
marco mybatis crea objetos de agente dinámicos de la interfaz de acuerdo con la definición de la interfaz m, y el cuerpo del método del objeto de agente es el mismo que el del método de clase de implementación de la interfaz de Dao anterior.
El desarrollo
de la interfaz del asignador debe seguir las siguientes especificaciones: 1. El espacio de nombres en el archivo Mapper.xml es el mismo que el nombre completo de la interfaz del asignador 2. El
nombre del método de la interfaz del asignador es el mismo que el id de cada declaración definida en
Mapper.xml 3. La entrada del método de interfaz Mapper El tipo de parámetro es el mismo que el parameterType de cada SQL definido en
mapper.xml 4. El tipo de parámetro de salida del método de interfaz Mapper es el mismo que el resultType de cada SQL definido en el
Inserte la descripción de la imagen aquí
modo proxy de prueba 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();
}

Dos, archivo de configuración de Mybatis

1. El archivo de configuración principal SqlMapConfig.xml

Inserte la descripción de la imagen aquí

1.1 Análisis de configuración común

1.1.1 etiqueta de entornos (configuración del entorno de la base de datos, soporte para la configuración de múltiples entornos)

Inserte la descripción de la imagen aquí
Entre ellos:
hay dos tipos de administrador de transacciones (transactionManager):

  • JDBC: esta configuración utiliza directamente la configuración de confirmación y reversión de JDBC, que se basa en la conexión obtenida de la fuente de datos para administrar el
    dominio 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).
    Cerrará la conexión de forma predeterminada, pero algunos contenedores no quieren esto, por lo que debe establecer la propiedad closeConnection en false para evitar que cierre el comportamiento predeterminado.

Hay tres tipos de fuente de datos:

  • UNPOOLED: La implementación de esta fuente de datos simplemente abre y cierra la conexión cada vez que se solicita.
  • POOLED: La realización de esta fuente de datos utiliza el concepto de "pool" para organizar los objetos de conexión JDBC.
  • JNDI: Esta fuente de datos está implementada para ser utilizada en contenedores como EJB o servidores de aplicaciones, el contenedor puede configurar
    la fuente de datos de forma centralizada o externa y luego colocar una referencia al contexto JNDI.

1.1.2 etiqueta de mapeador (la función es cargar el mapa)

Método de carga:

•使用相对于类路径的资源引用,例如:
<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 Ficha Propiedades

En el desarrollo real, es habitual extraer la información de configuración de la fuente de datos por separado en un archivo de propiedades, esta etiqueta puede cargar un archivo de propiedades de configuración adicional
Inserte la descripción de la imagen aquí

1.1.4 etiqueta typeAliases (escriba alias, establezca un nombre corto para el tipo Java)

! [] (https://img-blog.csdnimg.cn/20210112183132344.png
El marco mybatis ya ha configurado algunos tipos de alias de uso común:

Alias Tipo de mapeo
_byte byte
_largo largo
_corto corto
_En t En t
_entero En t
_doble doble
_flotador flotador
_booleano booleano
cuerda Cuerda
byte Byte
largo Largo
corto Corto
En t Entero
entero Entero
doble Doble
flotador Flotador
booleano Booleano
fecha Fecha
decimal BigDecimal
bigdecimal BigDecimal
objeto Objeto
mapa Mapa
hashmap HashMap
lista Lista
lista de arreglo Lista de arreglo
colección Colección
iterador Iterador

2. Archivo de configuración de mapeo mapper.xml

si juicio

<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>

Empalme de bucle 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 etiqueta foreach se usa para recorrer la colección:

  • colección: Representa los elementos de la colección a atravesar, preste atención a no escribir # {} al escribir
  • abierto: representa el comienzo de la declaración
  • cerrar: representa la parte final
  • elemento: representa cada elemento de la colección transversal, el nombre de la variable generada
  • sperator: representa el separador

Extracción de fragmentos SQL
Sql puede extraer sql duplicado, usar include para citar cuando se usa y finalmente lograr el propósito de reutilización 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>

Supongo que te gusta

Origin blog.csdn.net/weixin_39417423/article/details/112541360
Recomendado
Clasificación