【Mybatis】配置映射文件之parameterType用法小结

parameterType概述

在Mybatis配置映射文件中,select,insert,update,delete等元素支持parameterType属性。
parameterType只要功能用来指定输入参数的类型,类型可以是简单类型、HashMap类型、pojo的包装类型。

简单类型用法

创建Mybatis工程

首先创建一个Mybatis工程 【Mybatis】Mybatis开发入门程序
在数据库中创建一个名字为user的,给该表增加3个字段分别是id、name、age
在这里插入图片描述

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) AUTO_INCREMENT=38 DEFAULT CHARSET=utf8;

在这里插入图片描述

用法和测试结果

UserMapper

public interface UserMapper {
    User findUserById(int id);
}

配置文件中添加findUserById方法

 <select id="findUserById" parameterType="java.lang.Integer" 
 					resultType="com.lucas.mybatis.model.User">
	SELECT * FROM USER WHERE id = #{id}
</select>

添加测试代码

 InputStream inputstream;
        try {
            //获取Mybatis容器内容
            inputstream = Resources.getResourceAsStream("mybatis-config.xml");
            if (sqlsessionfactory == null) {
                //新建一个factory,作用用来生产sqlSeesion
                sqlsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
            }
            //使用factory的open方法创建一个sqlSeesion
            SqlSession sqlsession = sqlsessionfactory.openSession();
            UserMapper userMapper =sqlsession.getMapper(UserMapper.class);
            // 根据Id查询数据
            User userOne = userMapper.findUserById(2);
            System.out.println(userOne);
            sqlsession.commit(); //提交事务
            sqlsession.close();//关闭连接
        } catch (IOException e) {
            e.printStackTrace();
        }

运行结果:
在这里插入图片描述

pojo的包装类型

UserMapper

public interface UserMapper {
    List<User> findUsersByPojo(User user);
}

配置文件中添加findUsersByPojo方法

    <!-- parameterType传递pojo类型 -->
    <select id="findUsersByPojo" parameterType="com.lucas.mybatis.model.User" 		
    			resultType="com.lucas.mybatis.model.User">
		SELECT  * FROM USER WHERE name LIKE "%${name}%" or  age = #{age}
	</select>

添加测试代码

 InputStream inputstream;
        try {
            //获取Mybatis容器内容
            inputstream = Resources.getResourceAsStream("mybatis-config.xml");
            if (sqlsessionfactory == null) {
                //新建一个factory,作用用来生产sqlSeesion
                sqlsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
            }
            //使用factory的open方法创建一个sqlSeesion
            SqlSession sqlsession = sqlsessionfactory.openSession();
          UserMapper userMapper = sqlsession.getMapper(UserMapper.class);
            User user = new User();
            user.setName("张");
            user.setAge(18);
            List<User> users = userMapper.findUsersByPojo(user);
            for (User user1:users){
                System.out.println(user1);
            }
            sqlsession.commit(); //提交事务
            sqlsession.close();//关闭连接
        } catch (IOException e) {
            e.printStackTrace();
        }

运行结果:

在这里插入图片描述

HashMap类型用法

public interface UserMapper {
    List<User> findUsersByMap(Map<String,Object> map);
}

配置文件中添加findUsersByMap方法

    <!-- parameterType传递hashmap类型 -->
    <select id="findUsersByMap" parameterType="java.util.Map" 
    			resultType="com.lucas.mybatis.model.User">
			SELECT  * FROM USER WHERE name LIKE "%${name}%" or  age = #{age}
	</select>

添加测试代码

 InputStream inputstream;
        try {
            //获取Mybatis容器内容
            inputstream = Resources.getResourceAsStream("mybatis-config.xml");
            if (sqlsessionfactory == null) {
                //新建一个factory,作用用来生产sqlSeesion
                sqlsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
            }
            //使用factory的open方法创建一个sqlSeesion
            SqlSession sqlsession = sqlsessionfactory.openSession();
                UserMapper userMapper = sqlsession.getMapper(UserMapper.class);
            Map<String,Object> map = new HashMap<>();
            map.put("name","张");
            map.put("age",18);
            List<User> users = userMapper.findUsersByMap(map);
            for (User user1:users){
                System.out.println(user1);
            }
            sqlsession.commit(); //提交事务
            sqlsession.close();//关闭连接
        } catch (IOException e) {
            e.printStackTrace();
        }

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Teacher.Hu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值