Mybatis对数据的增删改查

本文详细介绍了如何使用Mybatis进行数据的增删改查操作,包括创建sql映射文件、设置参数、使用不同类型的参数(简单参数、多个参数、传入对象、Map传递)以及返回值的自动映射。此外,还提到了Mybatis防止SQL注入的方法以及如何处理数据库列名与Java属性名不一致的问题。
摘要由CSDN通过智能技术生成

创建sql的映射文件

<?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="com.demo.mybatispro.mapper.AdminMapper">

namespace某一个接口的名称,就是对应的地址就是我们创建好的接口的位置的地址

增加(插入数据)

id = 接口那边唯一的标识

parameterType = 给数据库传入的参数类型

useGeneratedKeys=“true” 可以返回刚插入数据的主键

keyProperty=“id” 告知与主键列对应的属性

keyColumn=“id” 告知的是数据库这边的主键列

    <insert id="saveAdmin" parameterType="Admin" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
        insert into admin (account,password,sex) values (#{account},#{password},#{sex})
    </insert>

#{} 占位符,是经过预编译的,编译好 SQL 语句再取值,#方式能够防止 sql 注入

$ {} 拼接符,会传入参数字符串,取值以后再去编译 SQL 语句,$方式无法防止 Sql 注入

注意:MyBatis 排序时使用 order by 动态参数时需要注意,用$而不是#

修改

id = 接口那边唯一的标识

parameterType = 给数据库传入的参数类型

<update id="updateAdmin" parameterType="Admin">
        update admin set account = #{account},
                         password = #{password},
                         sex = #{sex}
                         where id = #{id}
</update>

删除

id = 接口那边唯一的标识

parameterType = 给数据库传入的参数类型

<delete id="deleteAdmin">
        delete from admin where id = #{id}
</delete>

查找

id = 接口那边唯一的标识

parameterType = 给数据库传入的参数类型

resultType 返回的数据类型,将数据库数据自动的映射到java对象中

    <select id="getAdminById" resultType="Admin">
        select * from admin where id = #{id}
    </select>

resultType 返回的数据类型 通过反射根据返回值的类型创建一个对象

将数据库数据自动的映射到java对象中,但是有一个前提,前提是表中的列名与类中的属性名相同

但是因为再java和数据库中命名都有着各自的规定,所以mybatis在它的核心配置文件中的。

setting中有一个name="mapUnderscoreToCamelCase"的设置选项可以开启从经典的数据库名到java驼峰命名之间的转换user_name==>userName,它默认情况下为false,将属性值改为true就可以了

	<settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

向数据库参数传递

简单参数

简单的参数形式不需要使用 parameterType 参数定义

Admin getAdminById(int id);
<delete id="deleteAdmin">

多个参数

多个参数使用@Param(“id”)进行绑定,也不需要使用 parameterType 参数定义

@Param后面括号内才的是向数据库那边传输的参数名,在数据端这里也是拿param注解标签里的字符进行数据接收

Admin getAdmin(@Param("account")String account,@Param("sex")String sex);;

传入对象

如果传入一个复杂的对象,就需要使用 parameterType 参数进行类型定义

void updateAdmin(Admin admin);
<update id="updateAdmin" parameterType="Admin">

使用map传递

也可以使用 Map 对象传递

String类型的键,Object类型的值,以map的接口

void insertUser(Map<String,Object> map);

在 sql 中使用表达式获取 map 的键即可

java中已有的类作为类型使用的时候,可以直接使用mybatis定义好的别名来使用

在这里插入图片描述
sql映射过来的实现代码

    <select id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值