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

参考:

http://www.yihaomen.com/article/java/305.htm

原文地址:https://www.cnblogs.com/EasonJim/p/7051704.html