ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
~~~ <?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="test"> <!-- 查询 parameterType : 定义输入到sql中的映射类型 resultType :定义结果映射类型 #{} : 相当于JDBC的?占位符 ${value} : 输入参数将${value}替换, 做字符串拼接, 注: 如果是简单数据类型的参数,括号内必须是value --> <!-- #{} vs ${} 1. #{} 相当于jdbc sql的占位符(PreparedStatment), ${} 相当于jdbc sql 的连接符 + (Statement) 2. #{} 会对参数进行类型解析,如果是String会自动加上'', ${} 将参数原样输出到sql语句中 3. #{} 如果进行简单类型(String、Date、8种基本类型的包装类)的输入映射时,#{}中参数名称可以任意 ${} 如果进行简单类型(String、Date、8种基本类型的包装类)的输入映射时,${}中参数名称必须是value 4. ${} 存在sql注入的问题 --> <select id="findUserById" parameterType="int" resultType="com.sn.demo1.User"> select * from pt_user where id = #{id} </select> <select id="findUserByUsername" parameterType="java.lang.String" resultType="com.sn.demo1.User"> select * from pt_user where username like '%${value}%' </select> <!-- 添加 selectKey : 主键返回 keyProperty : 指定返回的主键,对应pojo中的哪个属性 order : sql执行顺序,设置为AFTER意思就是insert语句执行完之后再执行 LAST_INSERT_ID() : mysql的函数,返回auto_increment自增列记录的id值 --> <insert id="insertUser" parameterType="com.sn.demo1.User"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> select LAST_INSERT_ID() </selectKey> insert into pt_user (username, birthday, sex, address) values (#{username}, #{birthday}, #{sex}, #{address}) </insert> <!-- 删除 --> <delete id="deleteUserById" parameterType="int"> delete from pt_user where id = #{id} </delete> <!-- 更新 --> <update id="updateUser" parameterType="com.sn.demo1.User"> update pt_user set username=#{username}, birthday=#{birthday}, sex=#{sex}, address=#{address} where id =#{id} </update> </mapper> ~~~