getUsers();在mybatis-config.xml配置文件中绑定接口,不需要_mybatis的注解开发实验报告">
当前位置:   article > 正文

MyBatis学习总结第五篇_mybatis的注解开发实验报告总结

mybatis的注解开发实验报告总结

一、注解开发

使用注解开发,我们就不需要UserMapper.xml映射文件了,在UserMapper接口中使用注解@Select。案例如下:

  • 实体类和工具类与之前一样。
  • UserMapper接口中定义方法。
//使用注解查询所有用户
@Select("select * from user1")
List<User> getUsers();
  • 1
  • 2
  • 3
  • 在mybatis-config.xml配置文件中绑定接口,不需要配置映射文件了。
<!--绑定接口-->
<mappers>
    <mapper class="com.dmj.dao.UserMapper"/>
</mappers>
  • 1
  • 2
  • 3
  • 4
  • 编写测试类:
@Test
 //查询所有用户
public  void test(){
    //获得SqlSession对象
     SqlSession sqlSession = MybatisUtils.getSqlSession();
    //方式一:getMapper(推荐使用)
     UserMapper mapper = sqlSession.getMapper(UserMapper.class);
     List<User> userList = mapper.getUsers();
     for (User user : userList) {
         System.out.println(user);
     }
     sqlSession.close();//关闭
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 运行结果:
    注解开发

  • 此时,之前设置的别名为null,不能在使用resultMap结果集映射。所以官方文档指出:使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。 总的来说,如果简单就使用,复杂尽量用xml方式来映射SQL语句。

  • 注解的本质就是反射机制实现。底层是动态代理。

二、注解增删改查

注意:增删改需要提交事务。如果不在测试类中提交事务,可以在工具类MybatisUtils的获取SqlSession实例中设置为true,默认为false。设置为true,就不用在测试类中提交事务,会自动提交事务。

public static SqlSession getSqlSession(){
    //在这里设置为true,以后的增删改就不用提交事务,默认为false
    return sqlSessionFactory.openSession(true);
}
  • 1
  • 2
  • 3
  • 4

2.1查询(通过id)

  • UserMapper接口中定义方法:
//通过id查询用户
@Select("select * from user1 where id = #{id}")
User getUserByID(@Param("id") int id);
  • 1
  • 2
  • 3
  • 编写测试类:
@Test
 //通过id查询用户
 public  void test1(){
     SqlSession sqlSession = MybatisUtils.getSqlSession();
     UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    User userByID = mapper.getUserByID(3);
    System.out.println(userByID);
    sqlSession.close();
 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 查询的id=3,运行结果如下:
    查询

2.2增加

  • UserMapper接口中定义方法:
//添加用户
@Insert("insert into user1 (id,username,pwd,sex,address) values (#{id},#{username},#{pwd},#{sex},#{address})")
int addUser(User user);
  • 1
  • 2
  • 3
  • 编写测试类:
@Test
//添加用户
public  void test2(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    int res = mapper.addUser(new User(4,"孙悟空","123456","男","花果山"));
    if (res>0){
        System.out.println("添加成功!");
    }
    sqlSession.commit();//提交事务
    sqlSession.close();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 运行结果:
    添加用户

2.3更改

  • UserMapper接口中定义方法:
//更改用户
@Update("update user1 set username=#{username},pwd=#{pwd},address=#{address} where id=#{id}")
int updateUser(User user);
  • 1
  • 2
  • 3
  • 编写测试类:
@Test
//更改用户
public void test3(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    int res = mapper.updateUser(new User(4,"猪八戒","666666","男","高老庄"));
    if (res>0){
        System.out.println("更改成功!");
    }
    sqlSession.commit();//提交事务
    sqlSession.close();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 运行结果:
    更改

2.4删除

  • UserMapper接口中定义方法:
//删除用户
@Delete("delete from user1 where id = #{id} ")
int deleteUser(@Param("id") int id);
  • 1
  • 2
  • 3
  • 编写测试类:
@Test
//删除用户
public void test4(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    int res = mapper.deleteUser(4);
    if (res>0){
        System.out.println("删除成功!");
    }
    sqlSession.commit();//提交事务
    sqlSession.close();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 运行结果:
    删除用户

三、MyBatis执行流程

执行流程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/921999
推荐阅读
相关标签
  

闽ICP备14008679号