MyBatis代理Dao方式CRUD操作详解

📅 2026/8/3 16:15:08 👁️ 阅读次数 📝 编程学习
MyBatis代理Dao方式CRUD操作详解

一、查询所有用户

// UserMapper接口 public List<User> findAll(); <!-- UserMapper.xml --> <select id="findAll" resultType="com.qcbyjy.domain.User"> select * from user </select>


二、根据ID查询用户

public User findById(Integer userId); <select id="findById" resultType="com.qcbyjy.domain.User" parameterType="int"> select * from user where id = #{id} </select>



注意:SQL语句中使用 #{占位符名称},名称可以任意,适用于基本数据类型和String类型。

三、插入用户(保存操作)

public void insert(User user); <insert id="insert" parameterType="com.qcbyjy.domain.User"> <!-- 配置主键返回 --> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> select last_insert_id() </selectKey> insert into user (username,birthday,sex,address) values (#{username},#{birthday},#{sex},#{address}) </insert>


selectKey 标签说明:

keyProperty:要返回的属性名称

order="AFTER":插入数据后的行为

resultType:返回值的类型

四、修改用户

public void update(User user); <update id="update" parameterType="com.qcbyjy.domain.User"> update user set username = #{username},birthday = #{birthday}, sex = #{sex},address = #{address} where id = #{id} </update>


五、删除用户

public void delete(Integer userId); <delete id="delete" parameterType="Integer"> delete from user where id = #{id} </delete>


六、模糊查询

public List<User> findByName(String username); 方式一(推荐):使用 #{} 占位符,调用时传入 % 通配符 <select id="findByName" resultType="com.qcbyjy.domain.User" parameterType="string"> select * from user where username like #{username} </select>


方式二(不推荐):使用 ${value} 拼接

<select id="findByName" resultType="com.qcbyjy.domain.User" parameterType="string"> select * from user where username like '%${value}%' </select>


七、查询总记录数

public Integer findByCount(); <select id="findByCount" resultType="int"> select count(*) from user </select>


八、#{} 与 ${} 的区别

特性#{}¥{}
底层实现PreparedStatementStatement
SQL注入有效防止存在风险
类型转换自动进行java类型和jdbc类型转换不进行类型转换
简单类型值括号中可以是value或其它名称括号中只能是value
推荐度推荐使用不推荐