批量删除
-
${ } 实现
-
#{ }不行,因为会自动加上 ’ '(单引号) 而 ${ } 是字符串拼接。
-
// java中: List<User> select(){ ... mapper = sqlSessin.getMapper(..); mapper.deleteByIds(@Param("ids") "1,2,3,4"); } // .xml中 <delete id="deleteByIds"> delete from user where id in(${ids}); </delete> //如果使用#{},则会报错! <delete id="deleteByIds"> delete from user where id in(#{ids}); </delete> //对于#{},真实sql就变成了: <delete id="deleteByIds"> delete from user where id in( '1,2,3,4' ); </delete>
-
动态设计表名
-
${ } 实现
-
#{ }不行,因为会自动加上 ’ '(单引号) 而 ${ } 是字符串拼接。
-
// java中: List<User> select(){ ... mapper = sqlSessin.getMapper(..); List<User> list = mapper.select ("user") } // .xml中 <select id="select" resultType="user"> select * from ${user}; </select>
-
添加功能获取自增的主键
添加数据时,设置当前标签中的sql使用自增的主键, 并且返回自增主键
使用场景:对插入一个数据后的id自增后获取,可以对其中间表直接设置对应关系。
-
Insert 标签中 userGenerateKeys参数 与 keyProperty参数
-
**userGenerateKeys **为true后,且主键设置为null,自动自增
-
**keyProperty **设置为主键名后,传参的user的主键自动赋上自增的值
-
// java中: List<User> select(User user){ ... mapper = sqlSessin.getMapper(..); user.setId(null);//这里设不设值都没影响 因为id压根传不进去,只是方便理解 user.setUsername("张三"); user.setPassword("123"); mapper.insert (user); //返回后 user的值为: user={ id = 9, //keyProperty设置为主键名后,传参的user的主键自动赋上自增的值 username = "张三", password = "123" } } // .xml中 <insert id="insert" userGenerateKeys="true" keyProperty="id"> insert from user values(null, #{username}, #{password}); //userGenerateKeys为true后, 主键设置为null,自动自增 </insert>
-