(2)MyBatis之增删改查

    xiaoxiao2021-03-25  118

    引言MyBatis插入数据 1 插入一条数据使用自定义类型Student MyBatis更新数据 1更新一条数据传入自定义类型Student MyBatis查找数据 1 查询一条记录通过主键基本类型2 查询所有记录3 分页查询使用Map类型也可以使用自定义类型 MyBatis删除数据 1 删除一条数据 代码下载 本博客代码下载地址为MyBatis之增删改查

    1.引言

          在上一篇博客中,我们介绍了MyBatis最简单的使用(只是向数据库插入了一条数据),但是在上一篇博客中还存在一些问题,比如:

    SQL语句是写死的,我们不可以给SQL语句传入参数虽然我们定义了Student类和student表的映射关系,但是我们没有用到

          在本篇博客中我们就解决上一篇博客中遗留的这两个问题。

    2.MyBatis插入数据

    2.1 插入一条数据(使用自定义类型Student)

    编写我们的语句 <insert id="add" parameterType="com.Student"> insert into student(id,name,sal) values(#{id},#{name},#{sal}) </insert> 编写测试类 @Test public void testStudent() { SqlSession sqlSession = MyBatisUtil.getSqlSession(); try{ //执行mynamespace.add1的sql语句,正好我们的映射文件想对应 Student s=new Student(); s.setId(2); s.setName("wpx"); s.setSal(1000D); sqlSession.insert("mynamespace.add", s); }catch(Exception e){ e.printStackTrace(); sqlSession.rollback(); }finally{ sqlSession.commit(); } MyBatisUtil.closeSqlSession(); } 运行结果

    SQL语句参数解释 parameterType:代表sql传入的参数类型 如果传入的参数是自定义类型,比如我们这里的Student 那么我们在SQL中使用#{}来读取自定义类型的值,括号里面写自定义类型的属性,比如#{id}读取id属性 虽然我们括号里面写的是属性,但是还是通过get方法得到的参数,比如#{id},调用的是getId方法

    3 MyBatis更新数据

    3.1更新一条数据(传入自定义类型Student)

    编写我们的语句 <update id="update" parameterType="com.Student"> update student set name=#{name},sal=#{sal} where id=#{id} </update> 编写我们的测试类 @Test public void testStudent() { SqlSession sqlSession = MyBatisUtil.getSqlSession(); try{ //执行mynamespace.update的sql语句,正好我们的映射文件想对应 Student s=new Student(); s.setId(2); s.setName("zlr"); s.setSal(1000D); sqlSession.update("mynamespace.update", s); }catch(Exception e){ e.printStackTrace(); sqlSession.rollback(); }finally{ sqlSession.commit(); } MyBatisUtil.closeSqlSession(); } 运行结果

    3 MyBatis查找数据

    3.1 查询一条记录(通过主键:基本类型)

    编写我们的SQL语句 <select id="selectOne" parameterType="java.lang.Integer" resultMap="studentMap"> select id,name,sal from student where id=#{id} </select> 编写我们的测试类 @Test public void testSelectOne() { SqlSession sqlSession = MyBatisUtil.getSqlSession(); try{ Student student=sqlSession.selectOne("mynamespace.selectOne", 1); System.out.print(student); }catch(Exception e){ e.printStackTrace(); sqlSession.rollback(); }finally{ sqlSession.commit(); } MyBatisUtil.closeSqlSession(); } 运行结果

    代码解释 注意第一点: 这里我们传入的参数是基本数据类型:int类型 我们同样使用#{}来取得参数,就好比例子中的#{id} 但是需要注意的是括号里面的值随便填,这个例子也可以写成#{xxx},程序照样可以运行 注意第二点: 因为select语句有返回值,所以设置resultMap属性,我们通过这个属性设置映射关系,也就是告诉mybatis,我们查询到的是一个什么样子的对象

    3.2 查询所有记录

    编写我们的SQL语句

    <select id="selectAll" parameterType="com.Student" resultMap="studentMap"> select id,name,sal from student </select>编写测试类 @Test public void testSelectAll() { SqlSession sqlSession = MyBatisUtil.getSqlSession(); try{ List<Student> students=sqlSession.selectList("mynamespace.selectAll"); System.out.print(students); }catch(Exception e){ e.printStackTrace(); sqlSession.rollback(); }finally{ sqlSession.commit(); } MyBatisUtil.closeSqlSession(); } 运行结果

    代码解释 在本次事例中只需要注意一个地方: 我们需要的类型是:List<Student> 但是我们设置的类型是:parameterType="com.Student"

    3.3 分页查询(使用Map类型,也可以使用自定义类型)

    编写SQL语句 <select id="findAllWithFy" parameterType="map" resultType="com.Student"> select id,name,sal from student limit #{pstart},#{psize} </select> 编写测试类 @Test public void testFindAllWithFy() { SqlSession sqlSession = MyBatisUtil.getSqlSession(); try{ Map map=new HashMap(); map.put("pstart",1); map.put("psize",1); List<Student> students=sqlSession.selectList("mynamespace.findAllWithFy",map); System.out.print(students); }catch(Exception e){ e.printStackTrace(); sqlSession.rollback(); }finally{ sqlSession.commit(); } MyBatisUtil.closeSqlSession(); } 运行结果

    代码解释 这个代码需要注意一个地方: #{}表达式,括号里面需要填写map的key值

    4.MyBatis删除数据

    4.1 删除一条数据

    编写SQL语句 <delete id="delete" parameterType="java.lang.Integer"> delete from student where id = #{id} </delete> 编写测试类 @Test public void testDelete() { SqlSession sqlSession = MyBatisUtil.getSqlSession(); try{ sqlSession.delete("mynamespace.delete", 2); }catch(Exception e){ e.printStackTrace(); sqlSession.rollback(); }finally{ sqlSession.commit(); } MyBatisUtil.closeSqlSession(); } 运行结果

    代码下载

    本博客代码下载地址为:MyBatis之增删改查

    转载请注明原文地址: https://ju.6miu.com/read-12269.html

    最新回复(0)