Python 官方文档:入门教程 => 点击学习
目录1.模糊查询2.批量删除3.动态设置表名 4.添加功能获取自增的主键总结1.模糊查询 接口: public interface SelectMapper {
接口:
public interface SelectMapper {
List<User> getUserByLike(@Param("mohu") String mohu);
}
SQL(错误示范):
<select id="getUserByLike" resultType="com.atguigu.mybatis.pojo.User">
SELECT * FROM t_user WHERE PASSWord LIKE '%#{mohu}%'
</select>
测试:
public void test7(){
sqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
SqlSession sqlSession = sqlSessionUtils.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
List<User> userByLike = mapper.getUserByLike("123");
System.out.println(userByLike);
}
运行结果:
SQL: SELECT * FROM t_user WHERE PASSWORD LIKE '%?%'
因为:#{}:相当于参数占位符,且会对自动传入的数据加一个双引号,外面已经有一层引号,所以报错。
SQL(正确示范,以下3种都行):
运行结果:
接口:
int deleteMoreUser(@Param("ids") String ids);
SQL:
<delete id="deleteMoreUser">
delete from t_user where id in(${ids})
</delete>
测试:
public void test8(){
SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
SqlSession sqlSession = sqlSessionUtils.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
int i = mapper.deleteMoreUser("1,2");
}
表:
运行结果:
当有多张表时,例如 VIP表 和 普通表 ,这时需要动态设置表名。
接口:
List<User> getAllUser(@Param("tableName") String tableName);
SQL:
select * from ${tableName}
注意:不能使用 #{}
select * from #{tableName}
因为#{} 会自动添加单引号,就变成了:
select * from '表名'
场景模拟:
t_clazz(clazz_id,clazz_name)
t_student(student_id,student_name,clazz_id)
1 、添加班级信息
2 、获取新添加的班级的 id
3 、为班级分配学生,即将某学的班级 id 修改为新添加的班级的 id
接口:
int insertUser(User user);
SQL:
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
</insert>
测试:
public void test9(){
SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
SqlSession sqlSession = sqlSessionUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User(null,"小K","183918389",22,"男","13121178@qq.com");
mapper.insertUser(user);
System.out.println(user);
}
效果:
如果把 useGeneratedKeys keyProperty 删除
运行结果:
发现id=null
useGeneratedKeys:设置使用自增的主键
keyProperty:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参数user对象的某个属性中
到此这篇关于MyBatis特殊SQL的执行的文章就介绍到这了,更多相关MyBatis特殊SQL执行内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: MyBatis特殊SQL的执行实例代码
本文链接: https://lsjlt.com/news/178808.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0