zoukankan      html  css  js  c++  java
  • Mybatis框架学习总结-使用Mybatis对表执行CRUD操作

    使用MyBatis对表执行CRUD操作——基于XML的实现

    1.创建(create)用户:在userMapper.xml文件中增加:

    <!-- 创建用户Create -->
        <insert id="addUser" parameterType="com.fpc.Entity.User">
            insert into users(name,age) values(#{name},#{age})
        </insert>

    在测试类测试:

    String statement1 = "com.fpc.Mapping.userMapper.addUser";
            User user1 = new User();
            user1.setName("fpc");
            user1.setAge(28);
            int retResult = session.insert(statement1,user1);
            session.commit();
            session.close();
            System.out.println(retResult);

    执行的结果:

    执行之前查询数据库中的值:

    执行完,数据库users表中的数据为:

    2.删除(delete)用户:在userMapper.xml文件中增加:

    <!--删除用户 -->
        <delete id="deleteUser" parameterType="int">
            delete from users where id=#{id}
        </delete>

    单元测试类中测试:

    String statement1 = "com.fpc.Mapping.usrMapper.deleteUser";
            int retResult = session.delete(statement1,3);
            session.close();
            System.out.println(retResult);

    执行的结果,查询数据库,select * from users;得到的结果是:

    可以看到id为3的记录已经被删除了。

    3.更新(update)用户

    在userMapper.xml中增加:

    <!-- 更新用户 -->
        <update id="updateUser" parameterType="com.fpc.Entity.User">
            update users set name=#{name},age=#{age} where id=#{id}
        </update>

    测试类Test1中添加如下代码进行测试:

    String statement1 = "com.fpc.Mapping.userMapper.updateUser";
            User user = new User();
            user.setId(1);
            user.setName("Michiel");
            user.setAge(30);
            int retResult = session.delete(statement1,user);
            session.commit();
    //        *-session.close();
            System.out.println(retResult);
            
            String statement2 = "com.fpc.Mapping.userMapper.getUser";
            User user2 = (User) session.selectOne(statement2,1);
            System.out.println("Id: " +user2.getId() + " name : " + user2.getName() + " age: " + user2.getAge());

    执行结果为:

    使用Mybatis对表执行CRUD操作——基于注解的实现

    package com.fpc.Mapping;
    
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.annotations.Update;
    
    import com.fpc.Entity.User;
    
    public interface UserMapperI {
        //使用@Insert注解指明add方法要执行的SQL
        @Insert("insert into users(name,age) values(#{name},#{age})")
        public int add(User user);
        
        //使用@Delete注解指明deleteById方法要执行的SQL
        @Delete("delete from users where id=#{id}")
        public int deleteById(int id);
        
        //使用Update注解指明update方法要执行的SQL
        @Update("update users set name=#{name},age=#{age} where id=#{id}")
        public int update(User user);
        
        //使用Seletce注解指明getById方法要执行的SQL
         @Select("select * from users where id=#{id}")
         public User getById(int id);
    }

    需要说明的是,我们不需要针对UserMapper接口去编写具体的实现类代码,这个具体的实现类由Mybatis帮我们动态构建出来,我们只需要直接拿来使用即可。

    2.在conf.xml文件中注册这个映射接口

    在con.xml中添加:

    <!-- 注册UserMapper映射接口 -->
            <mapper class="com.fpc.Mapping.UserMapperI"></mapper>

    特别注意:一开始用的jar包是mybatis-3.0.2.jar,但是运行项目是报错了,报错信息如下:

    而lineNumber:23指的就是conf.xml中添加的接口配置文件。

    经过了各种查找原因,都没效果。但是看到有篇文章提到mybatis 3.2版本以下是不支持注解的形式的。抱着试试看的态度,我将mybatis的jar包换成了mybatis-3.4.5.

    然后再运行项目,不再报错。至于是不是必须得是3.2版本以上才支持注解的形式,这个不得而知,但3.0.3版本的mybatis是肯定不行的。

    3.单元测试类代码:

    创建用户:

    UserMapperI mapper = session.getMapper(UserMapperI.class);
            User user = new User();
            user.setName("userrrrrr");
            user.setAge(25);
            int add = mapper.add(user);
            session.close();
            System.out.println(add);

    运行完的结果:

    删除用户:

    UserMapperI mapper = session.getMapper(UserMapperI.class);
            int delete = mapper.deleteById(4);
            session.close();

    运行结果,id为4的用户被删除了:

    更新用户:

    UserMapperI mapper = session.getMapper(UserMapperI.class);
            User user = new User();
            user.setId(1);
            user.setName("Lily");
            user.setAge(24);
            int update = mapper.update(user);

    运行结果:

  • 相关阅读:
    SpringBoot报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
    SOAP报文转成JAVA对象
    Tomcat他山之石.可以攻玉(一)Server组件
    Tomcat:At least one JAR was scanned for TLDs yet contained no TLDs
    Tomcat8源码笔记(八)明白Tomcat怎么部署webapps下项目
    setsebool命令详解与SELinux管理
    Nginx访问限制模块limit_conn_zone 和limit_req_zone配置使用
    CentOS7防止CC攻击防止SSH爆破采取的措施
    Linux常用命令总结
    Linux下rsync命令使用总结
  • 原文地址:https://www.cnblogs.com/fangpengchengbupter/p/7833621.html
Copyright © 2011-2022 走看看