SSM开发实战教程第2章-单表的增删改查课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《SSM开发实战教程第2章-单表的增删改查课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SSM 开发 实战 教程 增删 课件
- 资源描述:
-
1、SSM开发实战教程第第2章章 单表的增删改查单表的增删改查 通过上一章的学习可了解到,MyBatis可以方便的对数据库进行操作,而数据库表可能是一个相对独立的表(这里谓之单表),也可能两个或多个有密切联系的表(这里谓之多表),本章先来学习单表的增删改查操作,下一章将学习多表关联查询 先来认识一下SqlSession的若干方法,这些方法被用来执行定义在mapper映射文件中的SELECT、INSERT、UPDATE和DELETE语句。以下是一些常用的方法。第第2章章 单表的增删改查单表的增删改查 T selectOne(String statement,Object parameter)查询单条
2、记录 List selectList(String statement,Object parameter)查询记录集合 Map selectMap(String statement,Object parameter,String mapKey)查询记录封装成Map集合 int insert(String statement,Object parameter)插入一条记录 int update(String statement,Object parameter)修改一条记录 int delete(String statement,Object parameter)删除一条记录SqlSession
3、的若干方法 以上方法可以重载,第二个参数不是必要的,重载方法如下。T selectOne(String statement)List selectList(String statement)Map selectMap(String statement,String mapKey)int insert(String statement)int update(String statement)int delete(String statement)SqlSession的若干方法 所谓结果映射就是让数据表的字段名称(即列名)与Java实体类的属性名称一一进行关联匹配的一种机制,以便MyBatis查完
4、数据库后能将关系型查询结果正确地封装为Java对象。如果数据库的字段名称跟相应的类的属性名称不一样,不作处理的话,mybatis运行后相应的字段处的查询结果就为空2.1 结果映射结果映射ResultMap SELECT id,studentname,gender,ageFROM STUDENT 使用结果映射前 发现除了年龄,其他全变成了null。这是因为数据库表student的字段与对象Student的属性名称不一致造成的。数据库查出来的数据无法封装到对应的对象属性中去,除了age名称相同,其他三个都不同,所以只有age的数据,没有其他三个的数据。解决办法有两个,其中一个就是在SQL语句中用别
5、名,让查询结果字段与对象属性一致,项目mybatis11用的正是这个办法,还有一个解决办法就是利用结果映射使用结果映射 DEBUG main-=Preparing:SELECT id,studentname,gender,age FROM STUDENT DEBUG main-=Parameters:DEBUG main-=Total:5 学生编号:1 学生姓名:张飞 学生性别:男 学生年龄:18 学生编号:2 学生姓名:李白 学生性别:男 学生年龄:20 学生编号:3 学生姓名:张无忌 学生性别:男 学生年龄:19 学生编号:4 学生姓名:赵敏 学生性别:女 学生年龄:17使用结果映射后 s
6、electList方法:适用于查询结果是多条的情形。selectOne方法:适用于查询结果是单条的情形。(1)将项目mybatis21复制成mybatis22,在接口类IStudentDao中新增一个方法。public Student findStudentById(int id);(2)在映射文件StudentMapper.xml中新增一段select语句。SELECT*FROM STUDENT where id=#id2.2 使用使用selectOne方法查询单条记录。方法查询单条记录。(3)在接口IStudentDao的实现类StudentDaoImpl中新增方法。Overridepub
7、lic Student findStudentById(int id)Student student=new Student();try session=MyBatisUtil.getSession();student=session.selectOne(com.lifeng.dao.IStudentDao.findStudentById,id);catch(Exception e)e.printStackTrace();return student;(4)在测试类TestStudent1中添加一个方法findStudentById(int id)。public static void mai
8、n(String args)findStudentById(1);public static void findStudentById(int id)IStudentDao studentDao=new StudentDaoImpl();Student student=studentDao.findStudentById(id);student.show();结果如下:DEBUG main-=Preparing:SELECT id,studentname,gender,age FROM STUDENT where id=?DEBUG main-=Parameters:1(Integer)DEB
9、UG main-=Total:1学生编号:1 学生姓名:张飞 学生性别男 学生年龄:182.3.1 主键非自增长主键非自增长(1)检查数据库student表,确认主键非自增长,在接口类IStudentDao中新增一个方法。public int insertStudent(Student student);(2)在映射文件StdentMapper.xml中新增一段insert语句。INSERT INTO student(id,studentname,gender,age)VALUES(#sid,#sname,#sex,#age)parameterType=“Student”也可不加,MyBati
10、s会自动判断传进来的参数类型。#sid是占位符,传进来的值是参数类型Student对应的同名属性值,即Student对象的sid属性的值,其他类推。2.3 使用使用insert方法添加记录方法添加记录(3)在接口IStudentDao的实现类StudentDaoImpl中新增insertStudent方法。Overridepublic int insertStudent(Student student)SqlSession session=null;int count=0;try session=MyBatisUtil.getSession();count=session.insert(com
11、.lifeng.dao.IStudentDao.insertStudent,student);mit();提交事务 catch(Exception e)e.printStackTrace();finally session.close();return count;这里用到了insert方法,用于添加记录,返回受影响的行数。(4)测试类中新增方法。public static void main(String args)insertStudent();/添加学生(给定主键值)public static void insertStudent()IStudentDao studentDao=new
12、StudentDaoImpl();Student student=new Student();student.setSid(6);student.setSname(武松);student.setSex(男);student.setAge(23);int count=studentDao.insertStudent(student);if(count0)System.out.println(添加成功!);(1)修改MySQL数据库,设置Student表的主键sid自动增长。(2)在StudentMapper.xml中新增一条insert语句。INSERT INTO student(student
13、name,gender,age)VALUES(#sname,#sex,#age)注意,这里的SQL语句没有用到sid主键。2.3.2 主键自增长主键自增长(3)在接口IStudentDao中添加方法insertStudentAutoIncrement。public int insertStudentAutoIncrement(Student student);(4)接口的实现类StudentDaoImpl中重写方法insertStudentAutoIncrement。Overridepublic int insertStudentAutoIncrement(Student student)Sq
14、lSession session=null;int count=0;try session=MyBatisUtil.getSession();count=session.insert(com.lifeng.dao.IStudentDao.insertStudentAutoIncrement,student);mit();catch(Exception e)e.printStackTrace();finally session.close();return count;(5)第一次测试。public static void main(String args)insertStudentAutoIn
15、crement();/添加学生(主键自增长)public static void insertStudentAutoIncrement()IStudentDao studentDao=new StudentDaoImpl();Student student=new Student();/第一次测试(不能获得主键值)student.setSname(林冲);student.setSex(男);student.setAge(22);int count=studentDao.insertStudentAutoIncrement(student);if(count0)System.out.printl
16、n(添加成功!);System.out.println(新添加的学生的编号是:+student.getSid();结果如下:DEBUG main-=Preparing:INSERT INTO student(studentname,gender,age)VALUES(?,?,?)DEBUG main-=Parameters:林冲(String),男(String),22(Integer)DEBUG main-=Updates:1添加成功!新添加的学生的编号是:null 可见添加是成功的,但添加后学生编号为null,即无法在添加完数据后立即获取到主键的值,有没办法实现添加成功后即可获取到这个自增
17、长的主键值呢,请看下一个步骤。(6)修改映射文件。INSERT INTO student(studentname,gender,age)VALUES(#sname,#sex,#age)(7)第二次测试。public static void main(String args)insertStudentAutoIncrement();/添加学生(主键自增长)public static void insertStudentAutoIncrement()IStudentDao studentDao=new StudentDaoImpl();Student student=new Student();/
18、第二次测试(可以获得主键值)student.setSname(苏东坡);student.setSex(男);student.setAge(21);int count=studentDao.insertStudentAutoIncrement(student);if(count0)System.out.println(添加成功!);System.out.println(新添加的学生的编号是:+student.getSid();第二次测试结果是 DEBUG main-=Preparing:INSERT INTO student(studentname,gender,age)VALUES(?,?,?
19、)DEBUG main-=Parameters:苏东坡(String),男(String),21(Integer)DEBUG main-=Updates:1 添加成功!新添加的学生的编号是:7(1)接口IStudentDao中添加一个方法deleteStudentById(int id)。public int deleteStudentById(int id);(2)在映射文件StudentMapper中添加一条delete语句。delete from student where id=#id 2.4 使用使用delete方法删除记录方法删除记录(3)实现类StudentDaoImpl。Ove
20、rridepublic int deleteStudentById(int sid)SqlSession session=null;int count=0;try session=MyBatisUtil.getSession();count=session.insert(com.lifeng.dao.IStudentDao.deleteStudentById,sid);mit();catch(Exception e)e.printStackTrace();finally session.close();return count;(4)测试类中添加deleteStudentById方法如下。pu
21、blic static void main(String args)deleteStudentById();public static void deleteStudentById()IStudentDao studentDao=new StudentDaoImpl();Scanner input=new Scanner(System.in);System.out.println(请输入你要删除的学生的学号:);int sid=input.nextInt();Student student=studentDao.findStudentById(sid);if(student!=null)int
22、 count=studentDao.deleteStudentById(sid);if(count0)System.out.println(删除成功!);elseSystem.out.println(该学生不存在!);结果如下。请输入你要删除的学生的学号:4DEBUG main-=Preparing:delete from student where id=?DEBUG main-=Parameters:4(Integer)DEBUG main-=Updates:1删除成功!(1)接口IStudentDao中添加一个方法updateStudent(Student student)。public
23、 int updateStudent(Student student);(2)在映射文件StudentMapper中添加一条update语句。UPDATE Student SET studentname=#sname,gender=#sex,age=#age WHERE id=#sid 2.5 使用使用update方法修改记录方法修改记录(3)实现类StudentDaoImpl添加如下方法。public int updateStudent(Student student)SqlSession session=null;int count=0;try session=MyBatisUtil.ge
24、tSession();count=session.update(com.lifeng.dao.IStudentDao.updateStudent,student);mit();catch(Exception e)e.printStackTrace();finally session.close();return count;(4)测试类中添加updateStudent方法。public static void updateStudent()IStudentDao studentDao=new StudentDaoImpl();Scanner input=new Scanner(System.i
25、n);System.out.println(请输入你要修改的学生的学号:);int sid=input.nextInt();Student student=studentDao.findStudentById(sid);if(student!=null)System.out.println(该学生原有信息如下);student.show();System.out.print(请输入学生的新的姓名:);String sname=input.next();System.out.print(请输入学生的新的性别:);String sex=input.next();System.out.print(请
展开阅读全文