mybatis如何遍历Map的key和value

本文详细介绍了使用MyBatis框架进行数据库操作的方法,包括动态SQL的编写技巧,如条件查询、插入、更新和删除操作。通过具体示例展示了如何利用Java Map集合和实体类进行参数传递,实现对数据库的高效操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实例一:
Java代码:
SqlSession session = MyBatisConnectionFactory.getSession(“pg”);
HashMap<String, Object> params = new HashMap<>(); //传入的参数
params.put(“content”, tableContent);
params.put(“tableName”, tableName);
params.put(“seq”, seq);
int flag = session.delete(“deleteOne”, params); //删除记录
HashMap<String, Object> map = session.selectOne(“selectOne”, params); //查询记录是否存在
flag = session.update(“updateOne”, params) > 0 ? true : false; //更新
flag = session.insert(“insertOne”, params) > 0 ? true : false; //新增
xml:



select count(*) as num from ${tableName} where seq =
#{seq};

	    <!-- 1.1 插入一条数据 -->  
	    <insert id="insertOne" parameterType="java.util.Map">  
	        insert into ${tableName}  
	        <foreach collection="content.keys" item="key" open="(" close=")"  
	            separator=",">  
	            ${key}  
	        </foreach>  
	        values  
	        <foreach collection="content.values" item="value" open="("  
	            close=")" separator=",">  
	            #{value}  
	        </foreach>  
	    </insert>  
	  
	    <!-- 1.2 更新记录 -->  
	    <update id="updateOne" parameterType="java.util.Map">  
	        UPDATE ${tableName} SET  
	        <foreach collection="content.keys" item="key" open="" close=""  
	            separator=",">  
	            ${key} = #{content[${key}]}  
	        </foreach>  
	        where seq = #{content[seq]} and genius_uid <=  
	        #{content[genius_uid]};  
	    </update>  
	  
	    <!-- 1.3 删除无效数据 -->  
	    <delete id="deleteOne" parameterType="java.util.Map">  
	        delete from ${tableName}  
	        where seq = #{content[seq]};  
	    </delete>  
	</mapper>

实例二:
entity:
1.
@Data
public class LineInsertVo {
private String templateId;
private String tableName;
/**
* 任务制定人
/
private String assignMan;
/
*
* 牵头单位
/
private String leadMan;
/
*
* 参与单位
/
private String executeMen;
/
*
* 表头信息
*/
private List lines;
}
2. @Data
@Table(name = “TASK_CONFIG_PLAN”)
public class TaskConfigPlanDo extends BaseEntity {
//表头信息存储
private transient Map<String,String> columnValue;
}
service:
TaskConfigPlanDo taskConfigPlanDo = new TaskConfigPlanDo();
Map<String, String> map = new HashMap<>();
for (LineVo vo : lines) {
if (vo.getIsTaskLine() == 0) {
String column = “HEAD_LINE” + vo.getId();
map.put(column, vo.getLineName());
}
}
dao:
void insertTaskConfs(@Param(“entity”) TaskConfigPlanDo taskConfigPlanDo, @Param(“tableName”) String tableName);
xml:

INSERT INTO ${tableName}
(
TASK_ID,
LEAD_MAN,
EXECUTE_MEN,
TEMPLATE_ID,

${key}

)
VALUES
(
#{entity.taskId,jdbcType=VARCHAR} ,
#{entity.leadMan,jdbcType=VARCHAR} ,
#{entity.executeMen,jdbcType=VARCHAR} ,
#{entity.templateId,jdbcType=VARCHAR},

#{value}

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值