Los parámetros de Mybatis_day2_Mybatis

Parámetro de configuración tipoType

  1. Las instrucciones para
    pasar instrucciones SQL deben establecerse utilizando el atributo parameterType de la etiqueta. El valor de este atributo puede ser un tipo básico, un tipo de referencia (por ejemplo: tipo de cadena) o un tipo de clase de entidad (clase POJO). Al mismo tiempo, también puede usar la clase de empaquetado de la clase de entidad
  • Este artículo presentará cómo usar la clase contenedora de la clase de entidad como parámetro.

  1. Asuntos que requieren atención
    • Tipo básico y cadena Podemos escribir el nombre del tipo directamente, o podemos usar el nombre del paquete. Nombre de clase, por ejemplo: java.lang.String.
    • Para los tipos de clase de entidad, actualmente solo podemos usar nombres de clase totalmente calificados. (A menos que se registre el alias de la clase de entidad).
      El motivo es que mybaits ya ha registrado los tipos de datos utilizados comúnmente durante la carga, por lo que no podemos escribir el nombre del paquete cuando lo usamos, y nuestra clase de entidad no tiene alias registrados. Por lo tanto, debe escribir el nombre de clase completo.

Pase el objeto contenedor pojo en parameterType

  • En el desarrollo, las condiciones de consulta se pasan a través de pojo. Las condiciones de consulta son condiciones de consulta integrales, que incluyen no solo las condiciones de consulta del usuario, sino también otras condiciones de consulta (por ejemplo, la información del producto comprado por el usuario también se utiliza como condiciones de consulta). En este momento, los objetos de empaque pueden usarse para pasar parámetros de entrada.
  • La clase Pojo contiene pojo.
  • Requisito: consulte la información del usuario en función del nombre de usuario y coloque la condición de consulta en el atributo de usuario de QueryVo.

  1. Write QueryVo
/**
* 
* <p>Title: QueryVo</p>
* <p>Description: 查询条件对象</p>
* 
*/
public class QueryVo implements Serializable {
	private User user;
			
public User getUser() {
		return user;
	}
	
public void setUser(User user) {
		this.user = user;
	}
}

  1. Escribe la interfaz de la capa de persistencia
/**
* 
* <p>Title: IUserDao</p>
* <p>Description: 用户的业务层接口</p>
* 
*/
public interface IUserDao {
/**
* 根据 QueryVo 中的条件查询用户
* @param vo
* @return
*/
List<User> findByVo(QueryVo vo);
}

  1. El archivo de mapeo de la interfaz de la capa de persistencia
<!-- 根据用户名称模糊查询,参数变成一个 QueryVo 对象了 -->
<select id="findByVo" resultType="cn.myp666.domain.User" 
parameterType="cn.myp666.domain.QueryVo">
	select * from user where username like #{user.username};
</select>

  1. Probar clase de embalaje como parámetro
@Test
public void testFindByQueryVo() {
	QueryVo vo = new QueryVo();
	User user = new User();
	user.setUserName("%王%");
	vo.setUser(user);
	List<User> users = userDao.findByVo(vo);
	
	for(User u : users) {
		System.out.println(u);
	}
}



Encapsulación de salida de Mybatis

resultType Configure el tipo de resultado

  • El atributo resultType puede especificar el tipo del conjunto de resultados, que admite tipos básicos y tipos de clase de entidad. Ya hemos aplicado esta propiedad en el caso CRUD anterior.
  • Cabe señalar que es lo mismo que parameterType, si ha registrado un alias de tipo, puede usar el alias directamente. Aquellos que no se hayan registrado deben usar el nombre de clase completamente calificado. Por ejemplo: la clase de entidad que definimos
  • Al mismo tiempo, existe un requisito, de lo 实体类中的属性名称必须和查询语句中的列名保持一致contrario no se puede lograr la encapsulación.mysql 在 windows 系统中不区分大小写!

Si el nombre del atributo en la clase de entidad y el nombre de la columna en la instrucción de consulta son inconsistentes, los datos se pueden encapsular mediante los siguientes métodos:

  1. Modificar la configuración de mapeo, seleccionar instrucción使用别名查询
<!-- 配置查询所有操作 -->
<select id="findAll" resultType="cn.myp666.domain.User">
	select id as userId,username as userName,birthday as userBirthday,
sex as userSex,address as userAddress from user
</select>
  • Ventajas: la capa SQL resuelve problemas rápidamente
  • Desventajas: si hay muchos datos de consulta, es engorroso escribir si usa alias

  1. Definir resultMap
<!-- 建立 User 实体和数据库表的对应关系
type 属性:指定实体类的全限定类名
id 属性:给定一个唯一标识,是给查询 select 标签引用用的。
-->
<resultMap type="cn.myp666.domain.User" id="userMap">
<id column="id" property="userId"/>
<result column="username" property="userName"/>
<result column="sex" property="userSex"/>
<result column="address" property="userAddress"/>
<result column="birthday" property="userBirthday"/>
</resultMap>


<!-- 配置查询所有操作 -->
<select id="findAll" resultMap="userMap">
select * from user
</select>
<!-- 
<select id="findAll" resultMap="userMap">的userMap为
<resultMap type="cn.myp666.domain.User" id="userMap">中的id属性
 -->
  • etiqueta de identificación: se utiliza para especificar el 主键campo
  • etiqueta de resultado: se utiliza para especificar el 非主键campo
    • atributo de columna: se utiliza para especificar el 数据库nombre de la columna
    • propiedad propiedad: se usa para especificar el 实体类nombre de la propiedad



Archivo de configuración SqlMapConfig.xml

Contenido y orden de configuración en SqlMapConfig.xml

  • propiedades
    • - propiedad
  • ajustes (parámetros de configuración global)
    • -ajuste
  • typeAliases (alias de tipo)
    • –TypeAliase
    • -paquete
  • typeHandlers (procesadores de tipo)
  • objectFactory
  • complementos
  • entornos (objeto de atributo de colección de entorno)
    • --Medio ambiente (objeto de sub-atributo de entorno)
      • —TransactionManager (gestión de transacciones)
      • —DataSource (fuente de datos)
  • mapeadores
    • –Mapeador
    • -paquete
propiedades
  • Al usar la configuración de la etiqueta de propiedades, podemos especificar la configuración de la propiedad de dos maneras.

  • El primero

<properties>
	<property name="jdbc.driver" value="com.mysql.jdbc.Driver"/>
	<property name="jdbc.url" value="jdbc:mysql://localhost:3306/db1"/>
	<property name="jdbc.username" value="root"/>
	<property name="jdbc.password" value="1419"/>
</properties>
  • El segundo
  1. Defina el archivo db.properties en classpath
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db1
jdbc.username=root
jdbc.password=1419
  1. configuración de etiqueta de propiedades
<!-- 配置连接数据库的信息
resource 属性:用于指定 properties 配置文件的位置,要求配置文件必须在类路径下
resource="jdbcConfig.properties"
url 属性:
URL: Uniform Resource Locator 统一资源定位符
http://localhost:8080/mystroe/CategoryServlet URL
协议 主机 端口 URI
URI:Uniform Resource Identifier 统一资源标识符
/mystroe/CategoryServlet
它是可以在 web 应用中唯一定位一个资源的路径
-->
<properties url="
file:///D:/IdeaProjects/day02_eesy_01mybatisCRUD/src/main/resources/jdbcConfig.prop
erties">
</properties>
或者
<properties resource="jdbcConfig.properties">
</properties>
  • En este punto, nuestra etiqueta dataSource se convierte en la referencia a la configuración anterior
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>



typeAliases (alias de tipo)
  • El alias predeterminado compatible con Mybatis, también podemos usar alias personalizados para desarrollar.
  • Alias ​​personalizado: configurar en SqlMapConfig.xml:
<typeAliases>
<!-- 单个别名定义 -->
<typeAlias alias="user" type="cn.myp666.domain.User"/>
<!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
<package name="cn.myp666.domain"/>
<package name="其它包"/>
</typeAliases>



mapeadores
  • <mapper resource = "" />

    • Use recursos relativos a la ruta de clase
      como:<mapper resource="cn/myp666/dao/IUserDao.xml" />
  • <mapper class = "" />

    • Utilice la ruta de clase de interfaz del asignador (dao)
      como:<mapper class="cn.myp666.dao.UserDao"/>
    • Nota: Este método requiere que el nombre de la interfaz del mapeador y el nombre del archivo de mapeo del mapeador sean los mismos y se coloquen en el mismo directorio.
  • <nombre del paquete = "" />

    • Registre todas las interfaces del asignador en el paquete especificado
      , como:<package name="cn.myp666.dao"/>
    • Nota: Este método requiere que el nombre de la interfaz del mapeador y el nombre del archivo de mapeo del mapeador sean los mismos y se coloquen en el mismo directorio.
Resumen
<configuration>
    <!-- 配置properties-->
    <properties resource="jdbcConfig.properties"></properties>

    <!--使用typeAliases配置别名,它只能配置domain中类的别名 -->
    <typeAliases>
        <package name="cn.myp666.domain"></package>
    </typeAliases>

    <!--配置环境-->
    <environments default="mysql">
        <!-- 配置mysql的环境-->
        <environment id="mysql">
            <!-- 配置事务 -->
            <transactionManager type="JDBC"></transactionManager>

            <!--配置连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"></property>
                <property name="url" value="${jdbc.url}"></property>
                <property name="username" value="${jdbc.username}"></property>
                <property name="password" value="${jdbc.password}"></property>
            </dataSource>
        </environment>
    </environments>
    <!-- 配置映射文件的位置 -->
    <mappers>
        <package name="cn.myp666.dao"></package>
    </mappers>
</configuration>
Publicado 94 artículos originales · elogiado 0 · visitas 2097

Supongo que te gusta

Origin blog.csdn.net/qq_16836791/article/details/104759196
Recomendado
Clasificación