MyBatis入门——使用注解开发

MyBatis入门——使用注解开发

  • 一、面向接口编程
  • 二、使用注解开发
  • 三、MyBatis详细的执行流程
  • 四、注解实现CRUD
    • 4.1 查询
      • ① 查询全部信息
      • ② 根据id查询信息
    • 4.2 增加
    • 4.3 修改
    • 4.4 删除
  • 五、@Param()注解

Tips:请先阅读:
一、MyBatis入门——第一个MyBatis项目搭建文章
https://blog.csdn.net/Gauss7/article/details/115264612
二、MyBatis入门——基本CRUD代码编写
https://blog.csdn.net/Gauss7/article/details/115280533
三、MyBatis入门——配置解析
https://blog.csdn.net/Gauss7/article/details/115309923
四、MyBatis入门——解决属性名和字段名不一致的问题
https://blog.csdn.net/Gauss7/article/details/115325116
五、MyBatis入门——日志
https://blog.csdn.net/Gauss7/article/details/115351129
六、MyBatis入门——分页
https://blog.csdn.net/Gauss7/article/details/115408607


一、面向接口编程

我们在一般实现一个系统的时候,通常是将定义与实现合为一体,不加分离的,我认为最为理想的系统设计规范应是所有的定义与实现分离,尽管这可能对系统中的某些情况有点麻烦。

二、使用注解开发

  1. 注解在接口"UserMapper"上实现

    @Select("select * from user")
    List<User> getUsers();
    
  2. 需要在核心配置文件"mybatis-config.xml"中绑定接口!

    <mappers>
    	<mapper class="com.twy.dao.UserMapper"/>
    mappers>
    
  3. 测试

    @Test
    public void test(){
           
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = mapper.getUsers();
        for (User user : users) {
           
            System.out.println(user);
        }
        sqlSession.close();
    }
    
  • 本质:反射机制实现

  • 底层:动态代理!

三、MyBatis详细的执行流程

MyBatis入门——使用注解开发_第1张图片

四、注解实现CRUD

Tips: 我们可以在工具类创建的时候实现自动提交事务!

public static SqlSession getSqlSession(){
     
    return sqlSessionFactory.openSession(true);
}

注意:

我们必须要将接口注册绑定到核心配置文件中!

4.1 查询

① 查询全部信息

第一步:编写接口,增加注解

//查询全部信息
@Select("select * from user")
List<User> getUsers();

第二步:测试

@Test
public void test(){
     
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);

    List<User> users = mapper.getUsers();
    for (User user : users) {
     
        System.out.println(user);
    }

	sqlSession.close();
}

② 根据id查询信息

第一步:编写接口,增加注解

//方法存在多个参数,所有的参数前面必须加上@Param("id")注解
@Select("select * from user where id = #{id}")
User getUserByID(@Param("id") int id);

第二步:测试

@Test
public void test(){
     
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);

    User userByID = mapper.getUserByID(1);
    System.out.println(userByID);

	sqlSession.close();
}

4.2 增加

第一步:编写接口,增加注解

@Insert("insert into user(id,name,age,sex,addr) values (#{id},#{name},#{age},#{sex},#{address})")
int addUser(User user);

第二步:测试

@Test
public void test(){
     
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);

	mapper.addUser(new User(4,"tt",20,"M","广州"));

    //若设置自动提交事务,则可以不用sqlSession.commit();
    sqlSession.commit();
	sqlSession.close();
}

4.3 修改

第一步:编写接口,增加注解

@Update("update user set name=#{name},age=#{age},sex=#{sex},addr=#{address} where id=#{id}")
int updateUser(User user);

第二步:测试

@Test
public void test(){
     
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);

	mapper.updateUser(new User(4,"twy",20,"M","珠海"));

	//若设置自动提交事务,则可以不用sqlSession.commit();
    sqlSession.commit();
    sqlSession.close();
}

4.4 删除

第一步:编写接口,增加注解

//可用注解将id设为uid
@Delete("delete from user where id=#{uid}")
int deleteUser(@Param("uid") int id);

第二步:测试

@Test
public void test(){
     
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);

	mapper.deleteUser(4);

	//若设置自动提交事务,则可以不用sqlSession.commit();
    sqlSession.commit();
    sqlSession.close();
}

五、@Param()注解

关于@Param()注解:

  • 基本类型的参数或者String类型,需要加上。
  • 引用类型不需要加。
  • 如果只有一个基本类型的话,可以忽略,但是建议都加上!
  • 我们在SQL中引用的就是我们这里的@Param()中设定的属性名!

你可能感兴趣的:(MyBatis,java,mybatis,mysql)