博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Mybatis】动态SQL
阅读量:2057 次
发布时间:2019-04-28

本文共 3520 字,大约阅读时间需要 11 分钟。

查询条件不确定,需要根据情况产生SQL语法,这种情况叫动态SQL

StudentMapper.xml

update t_students
stu_name = #{uname},
stu_sal = #{usal},
where stu_id = #{uid}
delete from t_students where stu_id in
#{ids}
delete from t_students where stu_id in
#{ids}
insert into t_students(
) values(
)
stu_id,
stu_name,
stu_sal,
#{id},
#{name},
#{sal},

然后在dao层StudentDao封装相应的方法

/** * 动态添加 * @param student */public void dynaAdd(Student student){	SqlSession sqlSession = null;	try {		sqlSession = MybatisUtil.getSqlSession();		int rows = sqlSession.insert(Student.class.getName() +".dynaAdd",student);		System.out.println("更新了" + rows + "行");		sqlSession.commit();	} catch (Exception e) {		e.printStackTrace();		sqlSession.rollback();		throw e;	}finally{		MybatisUtil.closeSqlSession();	}}/** * 动态更新 * @param id * @param name * @param sal */public void dynaUpdate(Integer id,String name,Double sal){	SqlSession sqlSession = null;	try {		sqlSession = MybatisUtil.getSqlSession();		Map
map = new LinkedHashMap<>(); map.put("uid", id); map.put("uname", name); map.put("usal", sal); int rows = sqlSession.update(Student.class.getName() +".dynaUpdate",map); System.out.println("更新了" + rows + "行"); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); throw e; }finally{ MybatisUtil.closeSqlSession(); }}/** * 动态查询 * @return */public List
dynafindAll(Integer id,String name,Double sal){ SqlSession sqlSession = null; try { sqlSession = MybatisUtil.getSqlSession(); Map
map = new LinkedHashMap<>(); map.put("pid", id); map.put("pname", name); map.put("psal", sal); return sqlSession.selectList(Student.class.getName() +".dynafindAll",map); } catch (Exception e) { e.printStackTrace(); throw e; }finally{ MybatisUtil.closeSqlSession(); }}/** * 动态删除(根据ID批量删除学生(数组版本)) * @param id * @param name * @param sal */public void dynaDeleteArray(int...ids){ SqlSession sqlSession = null; try { sqlSession = MybatisUtil.getSqlSession(); int rows = sqlSession.update(Student.class.getName() +".dynaDeleteArray",ids); System.out.println("更新了" + rows + "行"); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); throw e; }finally{ MybatisUtil.closeSqlSession(); }}/** * 动态批量删除(集合) * @param ids */public void dynaDeleteList(List
ids){ SqlSession sqlSession = null; try { sqlSession = MybatisUtil.getSqlSession(); int rows = sqlSession.update(Student.class.getName() +".dynaDeleteList",ids); System.out.println("更新了" + rows + "行"); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); throw e; }finally{ MybatisUtil.closeSqlSession(); }}
这样就实现了mybatis的动态SQL,使代码变得更加灵活。

转载地址:http://wdslf.baihongyu.com/

你可能感兴趣的文章
分析C语言的声明
查看>>
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>
c结构体、c++结构体和c++类的区别以及错误纠正
查看>>
Linux下查看根目录各文件内存占用情况
查看>>
A星算法详解(个人认为最详细,最通俗易懂的一个版本)
查看>>
利用栈实现DFS
查看>>
逆序对的数量(递归+归并思想)
查看>>
数的范围(二分查找上下界)
查看>>
算法导论阅读顺序
查看>>
Windows程序设计:直线绘制
查看>>
linux之CentOS下文件解压方式
查看>>
Django字段的创建并连接MYSQL
查看>>
div标签布局的使用
查看>>
HTML中表格的使用
查看>>
(模板 重要)Tarjan算法解决LCA问题(PAT 1151 LCA in a Binary Tree)
查看>>