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();
	}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值