myBatis 简单的增删改查
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();
}
还没有评论,来说两句吧...