zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    软件工程师的悲哀
    关于ControlTemplate 2
    DataTemplate总结2(学习)
    ObjectiveC——类
    6 Popular Ideas That Fail
    Develop Cross Platform Mobile App
    DP 与 DO(学习)
    Titanium颜色总结
    Illustrator Tips
    Titanium API
  • 原文地址:https://www.cnblogs.com/EasonJim/p/7051704.html
Copyright © 2011-2022 走看看