MyBatis学习总结第五篇

一、注解开发

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

  • 实体类和工具类与之前一样。
  • UserMapper接口中定义方法。
//使用注解查询所有用户
@Select("select * from user1")
List<User> getUsers();
  • 在mybatis-config.xml配置文件中绑定接口,不需要配置映射文件了。
<!--绑定接口-->
<mappers>
    <mapper class="com.dmj.dao.UserMapper"/>
</mappers>
  • 编写测试类:
@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();//关闭
}
  • 运行结果:
    注解开发

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

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

二、注解增删改查

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

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

2.1查询(通过id)

  • UserMapper接口中定义方法:
//通过id查询用户
@Select("select * from user1 where id = #{id}")
User getUserByID(@Param("id") int id);
  • 编写测试类:
@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();
 }
  • 查询的id=3,运行结果如下:
    查询

2.2增加

  • UserMapper接口中定义方法:
//添加用户
@Insert("insert into user1 (id,username,pwd,sex,address) values (#{id},#{username},#{pwd},#{sex},#{address})")
int addUser(User user);
  • 编写测试类:
@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();
}
  • 运行结果:
    添加用户

2.3更改

  • UserMapper接口中定义方法:
//更改用户
@Update("update user1 set username=#{username},pwd=#{pwd},address=#{address} where id=#{id}")
int updateUser(User user);
  • 编写测试类:
@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();
}
  • 运行结果:
    更改

2.4删除

  • UserMapper接口中定义方法:
//删除用户
@Delete("delete from user1 where id = #{id} ")
int deleteUser(@Param("id") int id);
  • 编写测试类:
@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();
}
  • 运行结果:
    删除用户

三、MyBatis执行流程

执行流程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值