在 Java + MyBatis 中,写 SQL 主要有 三种方式,下面从最常见到进阶给你说明,并配示例。
public interface UserMapper {
User selectById(Long id);
}
<?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.example.mapper.UserMapper">
<select id="selectById" parameterType="long" resultType="com.example.entity.User">
SELECT id, name, age
FROM user
WHERE id = #{id}
</select>
</mapper>
✅ 优点:SQL 清晰、易维护、复杂 SQL 友好
@Mapper
public interface UserMapper {
@Select("SELECT id, name, age FROM user WHERE id = #{id}")
User selectById(@Param("id") Long id);
}
@Select@Insert@Update@Delete✅ 适合:简单 SQL
❌ 不适合:复杂动态 SQL
<select id="selectUser" resultType="User">
SELECT * FROM user
WHERE 1=1
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</select>
<select id="selectByIds" resultType="User">
SELECT * FROM user
WHERE id IN
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</select>
User selectById(Long id);
User selectByNameAndAge(@Param("name") String name,
@Param("age") Integer age);
User selectByUser(User user);
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user(name, age)
VALUES(#{name}, #{age})
</insert>
@Autowired
private UserMapper userMapper;
User user = userMapper.selectById(1L);
如果你愿意,可以告诉我:
我可以直接帮你写 可运行示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。