Mybatis中使用万能的Map传参实现

网友投稿 263 2022-12-26

Mybatis中使用万能的Map传参实现

在编程中,有可能遇到我们的实体类或者数据库中表的字段或参数过多的情况,那这时候用Map传参是比较理想的选择。

Map的特性是键值对应的,只要确定了一个键key,那么值value可以是任何的数据,这样就可以在map内存中存入任何数据。

下面例子演示在mybatis中结合Map实现基本的增删改查

数据库表(fruits)结构:

实体类:

package com.pojo.pp1;

import java.math.BigDecimal;

/**

* 简述:

*创建实体

* @author:LiYansheng

* @date:2021/07/20 22:29

* @version:

*/

public class fruits {

private int id;

private String name;

private BigDecimal price;

public fruits(int id, String name, BigDecimal price) {

this.id = id;

this.name = name;

this.price = price;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public BigDecimal getPrice() {

return price;

}

public void setPrice(BigDecimal price) {

this.price = price;

}

@Override

public String toString() {

return "fruits{" +

"id=" + id +

", name='" + name + '\'' +

", price=" + price +

'}';

}

}

Dao接口:

package com.pojo.Dao;

import com.pojo.pp1.fruits;

import org.apache.ibatis.annotations.Param;

import java.util.List;

import java.util.Map;

/**

* 简述:

*

* @author:LiYansheng

* @date:2021/07/20 22:31

* @version:

*/

public interface fruitsDao {

/*查询全部信息*/

List getfruitsList();

/*通过ID查询信息*/

fruits getfruitsById(@Param("map") Map map);

/*添加信息*/

int addfruits(@Param("map") Map map);

/*删除信息*/

int deletefruits(@Param("map") Map map);

/*修改信息*/

int updatefruits(@Param("map") Map map);

}

Dao接口.XML文件:

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select id,name,price from fruits

select id,name,price from fruits where id=#{map.id};

insert into fruits(id,name,price) values (#{map.id},#{map.name},#{map.price});

delete from fruits where id=#{map.id};

update fruits set name=#{map.name},price=#{map.price} where id=#{map.id}

在Test类中测试运行:

package com.pojo.Dao;

import com.pojo.pp1.fruits;

import com.utils.mybatisUtils;

import org.apache.ibatis.session.SqlSession;

import org.junit.Test;

import java.math.BigDecimal;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

* 简述:

*

* @author:LiYansheng

* @date:2021/07/20 22:39

* @version:

*/

public class fruitsDaoTest {

@Test

public void getfruihttp://tsListTest() {

SqlSession sqlSession = mybatisUtils.getSqlSession();

fruitsDao fruitsDao = sqlSession.getMapper(com.pojo.Dao.fruitsDao.class);

List fruitsList = fruitsDao.getfruitsList();

for (fruits f : fruitsList) {

System.out.println(f);

}

sqlSession.close();

}

@Test

public void getfruitsByIdTest() {

SqlSession sqlSession = mybatisUtils.getSqlSession();

fruitsDao fruitsDao = sqlSession.getMapper(com.pojo.Dao.fruitsDao.class);

Map map = new HashMap<>();

map.put("id", 3);

fruits f = fruitsDao.getfruitsById(map);

System.out.println(f);

sqlSession.close();

}

@Test

public void addfruits() {

SqlSession sqlSession = mybatisUtils.getSqlSession();

fruitsDao fruitsDao = sqlSession.getMapper(com.pojo.Dao.fruitsDao.class);

Map map = new HashMap<>();

map.put("id", 0);

map.put("name", "watermelon");

BigDecimal bigDecimal= BigDecimal.valueOf(2);

map.put("price", bigDecimal);

int a = fruitsDao.addfruits(map);

if (a > 0) {

System.out.println("添加信息ok");

}

sqlSession.commit();

sqlSession.close();

}

@Test

public void deletefruits() {

SqlSession sqlSession = mybatisUtils.getSqlSession();

fruitsDao fruitsDao = sqlSession.getMapper(com.pojo.Dao.fruitsDao.class);

Map map = new HashMap<>();

map.put("id", 3);

int a = fruitsDao.deletefruits(map);

if (a > 0) {

System.out.println("删除信息ok");

}

sqlSession.commit();

sqlSession.close();

}

@Test

public void updatefruits() {

SqlSession sqlSession = mybatisUtils.getSqlSession();

fruitsDao fruitsDao = sqlSession.getMapper(com.pojo.Dao.fruitsDao.class);

Map map = new HashMap<>();

map.put("id", 1);

BigDecimal bigDecimal = BigDecimal.valueOf(5);

map.put("name", "Big_apple");

map.put("price", bigDecimal);

int a = fruitsDao.updatefruits(map);

if (a > 0) {

System.out.println("修改信息ok");

}

sqlSession.commit();

sqlSession.close();

}

}

测试结果,全部都可以通过

需要注意的地方:

标记序号的地方是两种写类型的方式

第二种方式需要在项目配置中resources下mybatis-config.xml的文件中加入以下的类型别名:

推荐用第二种方式哦

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java API如何实现向Hive批量导入数据
下一篇:Vue结合Springboot实现用户列表单页面(前后端分离)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~