JavaWeb框架————Mybatis(二)

1、parameterType(输入类型)——传递pojo包装对象

开发中通过可以使用pojo传递查询条件。
查询条件可能是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如查询用户信息的时候,将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数。
包装对象:Pojo类中的一个属性是另外一个pojo。

需求:根据用户名模糊查询用户信息,查询条件放到QueryVo的user属性中。

总配置文件sqlMapConfig.xml



<configuration>

    
    <properties resource="jdbc.properties"/>

    
    <typeAliases>
    
        
        <package name="cn.ctgu.mybatis.bean"/>
    typeAliases>

    
    <environments default="development">
        <environment id="development">
            
            <transactionManager type="JDBC" />
            
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url"
                    value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            dataSource>
        environment>
    environments>

    
    <mappers>
        
        
        

        
        <package name="cn.ctgu.mybatis.mapper"/>
    mappers>
configuration>

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

编写QueryVo

public class QueryVo {
    // 包含其他的pojo
    private User user;

    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
}

sql语句

SELECT * FROM user WHERE username LIKE '%张%'

UserMapper.xml文件







<mapper namespace="cn.ctgu.mybatis.mapper.UserMapper">

        <select id="findUserByQueryVo" parameterType="QueryVo" resultType="cn.ctgu.mybatis.bean.User">
            select * from user where username like '%${user.username}%'
        select>
mapper>

Mapper接口

package cn.ctgu.mybatis.mapper;

import java.util.List;

import cn.ctgu.mybatis.bean.QueryVo;
import cn.ctgu.mybatis.bean.User;

public interface UserMapper {

    //用mapper动态代理取代UserDao  UserDaoImpl
    //须遵循四个原则
    //