myBatis 简单的增删改查

心已赠人 2023-08-17 17:47 206阅读 0赞

myBatis 简单的增删改查

前面已经讲到用接口的方式编程。这种方式,要注意的一个地方就是。在User.xml 的配置文件中,

  1. mapper namespace="com.fjh.inter.UserMap"

命名空间非常重要,不能有错,必须与我们定义的package 和 接口一致。如果不一致就会出错,
这一章主要在上一讲基于接口编程的基础上完成如下事情:

  1. 1. mybatis 查询数据,包括列表
  2. 2. mybatis 增加数据.
  3. 3. mybatis 更新数据.
  4. 4. mybatis 删除数据.

1、返回集合类型

查询数据,前面已经讲过简单的,主要看查询出列表的
查询出列表,也就是返回list, 在我们这个例子中也就是
List , 这种方式返回数据,
需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType,
而这个resultMap 所对应的应该是我们自己配置的

  1. <!-- 为了返回list 类型而定义的returnMap -->
  2. <resultMap type="User" id="resultListUser">
  3. <id column="id" property="id" />
  4. <result column="userName" property="userName" />
  5. <result column="userAge" property="userAge" />
  6. <result column="userAddress" property="userAddress" />
  7. </resultMap>
  8. <!-- 返回list 的select 语句,注意 resultMap 的值是指向前面定义好的 -->
  9. <select id="getUserByname" parameterType="string" resultMap="resultListUser">
  10. select * from user where userName like #{userName}
  11. </select>

在接口类中添加方法:

调用测试

  1. //根据配置文件User.xml中的id去获取相应的sql语句
  2. //以接口的形式编程 在配置文件中要修改<mapper namespace="com.fjh.inter.UserMap">
  3. UserMap userManager = (UserMap)sqlSession.getMapper(UserMap.class);
  4. List<User> users = userManager.getUserByname("%" + name + "%");

2、插入新的数据

​ 在 UserMap 接口中增加方法:public void addUser(User user);
​ 在 User.xml 中配置

  1. <!--执行增加操作的SQL语句。id和parameterType 分别与UserMap接口中的addUser方法的名字和 参数类型一致。以#{name}的形式引用User参数 的name属性,MyBatis将使用反射读取User参数 的此属性。#{userName}中userName大小写敏感。引用其他 的gender等属性与此一致。useGeneratedKeys设置 为"true"表明要MyBatis获取由数据库自动生成的主 键;keyProperty="id"指定把获取到的主键值注入 到Student的id属性-->
  2. <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
  3. insert into user(userName,userAge,userAddress)
  4. values(#{userName},#{userAge},#{userAddress})
  5. </insert>
  6. 测试调用
  7. SqlSession sqlSession = sqlSessionFactory.openSession();
  8. try {
  9. //根据配置文件User.xml中的id去获取相应的sql语句
  10. //以接口的形式编程 在配置文件中要修改<mapper namespace="com.fjh.inter.UserMap">
  11. UserMap userManager = (UserMap)sqlSession.getMapper(UserMap.class);
  12. userManager.addUser(user);
  13. //sqlSession.commit() 一定要提交事务
  14. sqlSession.commit();
  15. //添加之后显示所有的用户
  16. getUsers();
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }

注意关于主键的生成方式,oracle没有自动生成策略那么应该使用
test_squ.nextval 序列的名字

  1. <insert id="insertAuthor" parameterType="domain.blog.Author">
  2. <selectKey keyProperty="id" resultType="int" order="BEFORE">
  3. select test_squ.nextval from dual
  4. </selectKey>
  5. insert into user(userName,userAge,userAddress)
  6. values(#{userName},#{userAge},#{userAddress})
  7. </insert>

3、修改数据

在接口中定义方法:updateUser();

修改User.xml

  1. <!--修改数据-->
  2. <update id="updateUser" parameterType="User">
  3. update user set userName=#{userName},userAge=#{userAge},
  4. userAddress=#{userAddress} where id=#{id}
  5. </update>

测试:

  1. /** 修改用户 @param user **/
  2. static void updateUser(User user){
  3. SqlSession sqlSession = sqlSessionFactory.openSession();
  4. try {
  5. //根据配置文件User.xml中的id去获取相应的sql语句
  6. //以接口的形式编程 在配置文件中要修改<mapper namespace="com.kaka.inter.UserMap">
  7. UserMap userManager = (UserMap)sqlSession.getMapper(UserMap.class);
  8. userManager.updateUser(user);
  9. sqlSession.commit();
  10. getUsers();
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. }
  14. }

4、删除用户

在UserMap接口中定义方法 public void deleteUser(int id);方法的名和User.xm中定义的update节点中id要一样

  1. <delete id="deleteUser" parameterType="int">
  2. delete from user where id=#{id}
  3. </delete>
  4. SqlSession sqlSession = sqlSessionFactory.openSession();
  5. try {
  6. //根据配置文件User.xml中的id去获取相应的sql语句
  7. //以接口的形式编程 在配置文件中要修改<mapper namespace="com.kaka.inter.UserMap">
  8. UserMap userManager = (UserMap)sqlSession.getMapper(UserMap.class);
  9. userManager.deleteUser(id);
  10. sqlSession.commit();
  11. getUsers();
  12. } catch (Exception e) {
  13. e.printStackTrace();
  14. }

发表评论

表情:
评论列表 (有 0 条评论,206人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MyBatis简单增删

    selcet 在我们之前说过的权限系统中,我们需要使用到查询功能来查询用户、角色和权限等数据。在使用纯粹的JDBC时,需要写查询语句,并且对结果集进行手动处理,将结果集映射到