publicinterfaceUserMapper{ @Select("select * from user") List<User> getAllUsers();
@Results({ @Result(property = "id", column = "id"), @Result(property = "username", column = "u"), @Result(property = "address", column = "a") }) @Select("select username as u,address as a,id as id from user where id=#{id}") User getUserById(Long id);
@Select("select * from user where username like concat('%',#{name},'%')") List<User> getUsersByName(String name);
@Insert({"insert into user(username,address) values(#{username},#{address})"}) @SelectKey(statement = "select last_insert_id()", keyProperty = "id", before = false, resultType = Integer.class) IntegeraddUser(Useruser);
@Update("update user set username=#{username},address=#{address} where id=#{id}") Integer updateUserById(User user);
@Delete("delete from user where id=#{id}") Integer deleteUserById(Integer id); }
这里是通过全注解的方式来写 SQL,不写 XML 文件。
@Select、@Insert、@Update 以及 @Delete 四个注解分别对应 XML 中的 select、insert、update 以及 delete 标签,@Results 注解类似于 XML 中的 ResultMap 映射文件(getUserById 方法给查询结果的字段取别名主要是向小伙伴们演示下 @Results 注解的用法)。
另外使用 @SelectKey 注解可以实现主键回填的功能,即当数据插入成功后,插入成功的数据 id 会赋值到 user 对象的id 属性上。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-21-mapper.dtd"> <mappernamespace="com.antonio.hello.mybatis.mapper.UserMapper2"> <selectid="getAllUser"resultType="com.antonio.hello.mybatis.model.User"> select * from t_user; </select> <insertid="addUser"parameterType="com.antonio.hello.mybatis.model.User"> insert into user (username,address) values (#{username},#{address}); </insert> <updateid="updateUserById"parameterType="com.antonio.hello.mybatis.model.User"> update user set username=#{username},address=#{address} where id=#{id} </update> <deleteid="deleteUserById"> delete from user where id=#{id} </delete> </mapper>
将接口中方法对应的 SQL 直接写在 XML 文件中。那么这个 UserMapper.xml 到底放在哪里呢?有两个位置可以放,第一个是直接放在 UserMapper 所在的包下面:
放在这里的 UserMapper.xml 会被自动扫描到,但是有另外一个 Maven 带来的问题,就是 java 目录下的 xml 资源在项目打包时会被忽略掉,所以,如果 UserMapper.xml 放在包下,需要在 pom.xml 文件中再添加如下配置,避免打包时 java 目录下的 XML 文件被自动忽略掉:
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !