MyBatis3-实现单表数据的增删查改
继续前一篇文章http://www.cnblogs.com/EasonJim/p/7050710.html所示的例子,返回的是单个实体,而接下来将进行列表的返回等操作:
一、查询列表
查询出列表,也就是返回List, 在这个例子中也就是List<User>,这种方式返回数据,需要在User.xml里面配置返回的类型resultMap,注意不是resultType,而这个resultMap所对应的应该自己配置的,配置如下:
<!-- 为了返回List,类型而定义的resultMap --> <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="selectUsers" parameterType="string" resultMap="resultListUser"> select * from user where userName like #{userName} </select>
而这两个配置都是在mapper节点中的。
在IUserOperation接口中增加方法:
public List<User> selectUsers(String userName);
接下来是测试代码的获取列表,以下为核心代码:
List<User> users = userOperation.selectUsers("%"); for (User tempUser : users) { System.out.println(tempUser.getUserAddress()); System.out.println(tempUser.getUserName()); }
二、增加数据
在IUserOperation接口中增加方法:
public void addUser(User user);
接口的方法还可以这样写,返回值代表影响的行数
public int addUser(User user);
在User.xml中配置增加的语句:
<!--执行增加操作的SQL语句。id和parameterType分别与IUserOperation接口中的addUser方法的名字和参数类型一致。以#{userName}的形式引用User参数的userName属性,MyBatis将使用反射读取User参数 的此属性。#{userName}中userName大小写敏感。引用其他的userAge等属性与此一致。useGeneratedKeys设置为"true"表明要MyBatis获取由数据库自动生成的主 键;keyProperty="id"指定把获取到的主键值注入到User的id属性 --> <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id"> insert into user(userName,userAge,userAddress) values(#{userName},#{userAge},#{userAddress}) </insert>
而这个配置都是在mapper节点中的。
接下来是测试代码的获取列表,以下为核心代码:
System.out.println("Add:"); User addUser=new User(); addUser.setUserAddress("guangdong,guangzhou"); addUser.setUserName("eason"); addUser.setUserAge("80"); userOperation.addUser(addUser); session.commit();//必须提交事务,否则不会写入到数据库。 if (addUser.getId()>0) { System.out.println("增加数据成功,新增的id为:"+addUser.getId()); }
三、更新数据
在IUserOperation接口中增加方法:
public int updateUser(User user);
在User.xml中配置更新语句:
<update id="updateUser" parameterType="User"> update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id} </update>
而这个配置都是在mapper节点中的。
接下来是测试代码的获取列表,以下为核心代码:
User updateUser = userOperation.selectUserByID(1); updateUser.setUserAddress("beijin,beijin"); int updateRetCount = userOperation.updateUser(updateUser); session.commit();//必须提交事务,否则不会写入到数据库。
四、删除数据
在IUserOperation接口中增加方法:
public int deleteUser(int id);
在User.xml中配置删除语句:
<delete id="deleteUser" parameterType="int"> delete from user where id=#{id} </delete>
而这个配置都是在mapper节点中的。
接下来是测试代码的获取列表,以下为核心代码:
int deleteRetCount = userOperation.deleteUser(6); session.commit();//必须提交事务,否则不会写入到数据库。
测试工程:https://github.com/easonjim/5_java_example/tree/master/mybatis/test3
参考: