myBatis 简单的增删改查

mac2022-06-30  29

myBatis 简单的增删改查

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

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

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

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

1、返回集合类型

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

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

在接口类中添加方法:

调用测试

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

2、插入新的数据

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

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

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

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

3、修改数据

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

修改User.xml

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

测试:

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

4、删除用户

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

<delete id="deleteUser" parameterType="int"> delete from user where id=#{id} </delete> SqlSession sqlSession = sqlSessionFactory.openSession(); try { //根据配置文件User.xml中的id去获取相应的sql语句 //以接口的形式编程 在配置文件中要修改<mapper namespace="com.kaka.inter.UserMap"> UserMap userManager = (UserMap)sqlSession.getMapper(UserMap.class); userManager.deleteUser(id); sqlSession.commit(); getUsers(); } catch (Exception e) { e.printStackTrace(); }
最新回复(0)