Mybatis参数深入——改造conf.xml文件

实体类包装类的参数传递

SQL 语句传参,使用标签的 parameterType 属性来设定。该属性的取值可以是基本类型,引用类型(例如:String 类型),还可以是实体类类型(POJO 类)。同时也可以使用实体类的包装
类!!!

1、首先提供个 User.java
2、给出 QueryVo .java,可以用来封装多个实体类

public class QueryVo {
	private User user;

	public User getUser() {
		return user;
	}

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

3、给出接口 IUserDao

import java.util.List;

import domain.QueryVo;
import domain.User;

public interface IUserDao {
    /**
     * 根据queryVo中的条件查询用户
     * @param vo
     * @return
     */
    List<User> findUserByVo(QueryVo vo);
}

4、给出 IUserMapper

<?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 namespace="dao.IUserDao">

    <!-- 根据queryVo的条件查询用户 -->
    <select id="findUserByVo" parameterType="domain.QueryVo" resultType="domain.User">
        select * from user where username like #{user.username}
    </select>
</mapper>

这里应用了OGNL表达式:
在这里插入图片描述
5、给出 conf.xml
6、给出 FindByVo.java

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import dao.IUserDao;
import domain.QueryVo;
import domain.User;

public class FindByVo {
	public static void main(String[] args) throws IOException {
			//1.读取配置文件
			InputStream in = Resources.getResourceAsStream("conf.xml");
			//2.创建SqlSessionFactory工厂
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			SqlSessionFactory factory = builder.build(in);
			//3.使用工厂生产SqlSession对象
			SqlSession session = factory.openSession();
			//4.使用SqlSession创建Dao接口的代理对象
		    IUserDao userDao = session.getMapper(IUserDao.class);
		 	QueryVo vo = new QueryVo();
	        User user = new User();
	        user.setUsername("%l%");
	        vo.setUser(user);
	        //5.执行查询一个方法
	        List<User> users = userDao.findUserByVo(vo);
	        for(User u : users){
	            System.out.println(u);
	        }
	        //提交事务
			session.commit();
		    session.close();
		    in.close();
	}

}

由多个对象组装成一个查询条件,来实现数据的查询,被广泛应用于实际开发中。

分割线 — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

改造conf.xml文件

ResultMap的学习

以上这些代码呢,都是User.java 中的属性名 和数据库中的字段名是一样的情况,就是User.java中的属性名是 id; username; birthday;sex; address; 数据库中的字段也是 : id; username; birthday;sex; address
那如果User类中的属性名为什么 UserId; userName; UserBirthday;UserSex; UserAddress; 那该如何办呢???

  • 方法一,在sql语句中起别名
    select id as userId,username as userName,address as userAddress,sex as userSex,birthday as userBirthday from user;

  • 方法二:
    在这里插入图片描述
    使用配置properties文件的方法

配置properties::
可以在标签内部配置连接数据库的信息,也可以通过属性引用外部配置文件信息。
resource属性:
用于指定配置文件的位置,是按照类路径的写法来写,并且必须位于类路径下
url属性:(比较少用,resource属性比较常见)
是要求按照Url的写法来写地址

在这里插入图片描述
1、给出 jdbcConfig.properties

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=Asia/Shanghai
username=root
password=root

2、改动 conf.xml
改动的两处位置:
在这里插入图片描述
关于TypeAliase标签和package标签
在这里插入图片描述

改良之后的 conf.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>
    <!-- 配置properties-->
   
	<properties resource="jdbcConfig.properties">
	</properties>

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

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

            <!--配置连接池-->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的4个基本信息 -->
               <property name="driver" value="${driver}"/>
 			   <property name="url" value="${url}"/>
 			   <property name="username" value="${username}"/>
 			   <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 配置映射文件的位置 -->
    <mappers>
        <package name="dao"></package>
    </mappers>
</configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值