欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mybatis进阶--参数传递

程序员文章站 2022-06-13 20:38:35
...

Mybatis进阶--参数传递

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>mybatis_Demo</artifactId>
        <groupId>com.qwl</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>mybatis</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.11</version>
        </dependency>
    </dependencies>

</project>

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

    <!--加入DB配置文件-->
    <properties resource="db.properties"></properties>

    <!--配置配置项-->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="jdbcTypeForNull" value="NULL"/>
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="false"/>
    </settings>
    
    <!--起别名-->
    <typeAliases>
        <package name="com.imooc.mybatis.bean"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

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

db.peoperties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8
username=root
password=root

log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug" />
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info" />
    </logger>
    <root>
        <level value="debug" />
        <appender-ref ref="STDOUT" />
    </root>
</log4j:configuration>

PersonMapper.xml

<?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>
</mapper>

Dept.java

package com.imooc.mybatis.bean;

import java.util.List;

/**
 * @author imooc
 */
public class Dept {
	
	private Integer id;
	
	private String departmentName;
	
	private List<Person> persons;
	
	public Dept(Integer id) {
		super();
		this.id = id;
	}
	
	public Dept() {
		super();
		 
	}

	@Override
	public String toString() {
		return "Dept{" +
				"id=" + id +
				", departmentName='" + departmentName + '\'' +
				", persons=" + persons +
				'}';
	}

	public List<Person> getPersons() {
		return persons;
	}

	public void setPersons(List<Person> persons) {
		this.persons = persons;
	}

	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getDepartmentName() {
		return departmentName;
	}
	public void setDepartmentName(String departmentName) {
		this.departmentName = departmentName;
	}
	 
}

person.java

package com.imooc.mybatis.bean;

/**
 *
 */
public class Person {
	
	private Integer id;
	
	private String username;
	
	private String email;
	
	private String gender;
	
	private Dept dept;
	
	
	public Person() {

	}
	 
	public Person(String username, String email, String gender,
			Dept dept) {
		this.id = id;
		this.username = username;
		this.email = email;
		this.gender = gender;
		this.dept = dept;
	}
	public Person(String username, String email, String gender) {
		this.id = id;
		this.username = username;
		this.email = email;
		this.gender = gender;
	}

	public Person(String username, String gender) {
		this.username = username;
		this.gender = gender;
	}

	public Integer getId() {
		return id;
	}


	public void setId(Integer id) {
		this.id = id;
	}


	public String getUsername() {
		return username;
	}


	public void setUsername(String username) {
		this.username = username;
	}


	public String getEmail() {
		return email;
	}


	public void setEmail(String email) {
		this.email = email;
	}


	public String getGender() {
		return gender;
	}


	public void setGender(String gender) {
		this.gender = gender;
	}


	public Dept getDept() {
		return dept;
	}


	public void setDept(Dept dept) {
		this.dept = dept;
	}


	@Override
	public String toString() {
		return "Person [id=" + id + ", username=" + username + ", email="
				+ email + ", gender=" + gender + ", dept=" + dept + "]";
	}
	

}

单参数传递

以数组为传递参数进行查询

参数处理

  • 传递单个参数的形式(mybatis 会自动进行参数的赋值)
  • 传递多个参数(mybatis会自动封装在Map集合中)
  • Collection、List、Array作为参数,封装为Map,但有一定的规则

personMapper.xml 单参传递不关心具体的名字

Mybatis进阶--参数传递

PersonMapper.java

Mybatis进阶--参数传递

ParameterTest.java

Mybatis进阶--参数传递

mybatis默认多参数情况

  1. JavaBean传递参数
  2. Map接口
  3. 注解@param

PersonMapper.xml

Mybatis进阶--参数传递

Mybatis进阶--参数传递

Mybatis进阶--参数传递

MyBatis多参传递---JavaBean

Mybatis进阶--参数传递

PersonMapper.xml

Mybatis进阶--参数传递

Mybatis进阶--参数传递

Mybatis进阶--参数传递

Mybatis进阶--参数传递

多参处理--Map

Mybatis进阶--参数传递

Mybatis进阶--参数传递

Mybatis进阶--参数传递

Mybatis多参数处理--注解@param

Mybatis进阶--参数传递

Mybatis进阶--参数传递

Mybatis进阶--参数传递

Mybatis集合类型参数传递

  1. 当参数为Collection接口,转换为Map,Map的Key为collection
  2. 如果参数类型为List接口的,除了collection的值外,list作为key
  3. 如果参数为数组,也会转换为Map,Map的key为array

Mybatis进阶--参数传递

Mybatis进阶--参数传递

Mybatis进阶--参数传递

也可以是

Mybatis进阶--参数传递

参数为数组时

Mybatis进阶--参数传递

Mybatis进阶--参数传递

Mybatis进阶--参数传递

可以用@param

Mybatis进阶--参数传递

Mybatis进阶--参数传递

 

Mybatis动态SQL之foreach

Mybatis进阶--参数传递

Mybatis进阶--参数传递

Mybatis进阶--参数传递

Mybatis进阶--参数传递

 

 

 

 

 

 

 

 

 

 

相关标签: Mybatis