MyBatis常用注解

“雪消门外千山绿,花发江边二月晴”

介绍

在前面介绍过MyBatis基于映射关系(也就是XML文件配置)来实现操作数据库MyBatis关联映射关系
现在,我们来看下基于注解,MyBatis如何实现数据库的CRUD(增删改查)操作。

MyBatis常用Annotation注解

注解功能
Select映射查询的SQL语句
SelectProviderSelect语句的动态SOL映射。允许指定一个类名和一个方法在执行时返回运行的查询语句。有两个属性:type和 method,type属性是类的完全限定名,method是该类中的那个方法名。
Insert映射插入的SQL语句
InsertProviderInsert语句的动态SQL映射。允许指定一个类名和一个方法在执行时返回运行的查询语句。有两个属性:type和 method,type属性是类的完全限定名,method是该类中的那个方法名。
Update映射更新的SQL语句
UpdateProviderUpdate语句的动态SQL。允许指定一个类名和一个方法在执行时返回运行的查询语句。有两个属性:type和 method,type属性是类的完全限定名,method是该类中的那个方法名。
Delete映射删除的SQL语句
DeleteProviderDelete句的动态SQL映射。允许指定一个类名和一个方法在执行时返回运行的查询语句。有两个属性:type和 method,type属性是类的完全限定名,method是该类中的那个方法名。
Result在列和属性之间的单独结果映射。属性包括:id、 column、 property、 javaType、jdbeType、 typeHandler、one、many。id属性是一个布尔值,表示是否被用于主键映射。one属性是单独的联系,和XML配置中的 <association>相似,而many属性是对集合而言的,和XML配置的<collection>相似。
Options提供配置选项的附加值,它们通常在映射句上作为附加功能配置出现。
one复杂类型的单独属性值映射。必指定 select属性,表示已映射的SQL语句的完全限定名。
Many复杂类型的集合属性映射。必指定 select属性,表示已映射的SQL语句的完全限定名。
Param当映射器方法需要多个参数时,这个注解可以被应用于映射器方法参数来给每个参数取一个名字。否则,多参数将会以它们的顺序位置和SQL语句中的表达式进行映射,这是默认的。

示例

基于注解的CRUD操作:
mapper.java文件(因为这里是基于注解实现的,所以没有xml文件)

import org.apache.ibatis.annotations.*;
import org.arunner.domain.User;

import java.util.List;

/**
 * @author arunner
 * @date 2018/11/10
 */
public interface UserMapper {
	//新增
    @Insert("insert into tb_user (name,sex,age) values (#{name},#{sex},#{age})")
    @Options(useGeneratedKeys = true,keyProperty = "id")
//    useGeneratedKeys = true表示使用数据库自动增长的主键,需要底层数据库的支持。keyProperty = "id"表示将插入数据生成的主键设置到user对象的id当中
    int saveUser(User user);
	
	//删除
    @Delete("delete from tb_user where id = #{id}")
    int removeUser(@Param("id") Integer id);

	//更新
    @Update("update tb_user set name=#{name},age=#{age},sex=#{sex} where id = #{id}")
    void modifyUser(User user);

	//根据ID查询
    @Select("select * from tb_user where id= #{id}")
    @Results({
            @Result(id=true,column = "id",property = "id"),
            @Result(column = "name",property = "name"),
            @Result(column = "age",property = "age"),
            @Result(column = "sex",property = "sex"),
    })
//    @Result注解用于列和属性之间的结果映射,如果列和属性名称相同,则可以省略该注解,MyBatis会自动进行映射
    User selectUserById(Integer id);
	
	//查询所有
    @Select("select * from tb_user")
    List<User> selectAllUser();
}

测试插入操作:

public class InsertTest {
    public static void main(String[] args) {
        //获取sqlSession对象
        SqlSession sqlSession = FKSqlSessionFactory.getSqlSession();
        //获得mapper的代理对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //创建user对象,并设置属性
        User user = new User();
        user.setAge(16);
        user.setName("arunner");
        user.setSex("男");
        //插入数据
        mapper.saveUser(user);
        //查看插入数据生成的主键
        System.out.println(user.getId());
        //提交事务
        sqlSession.commit();
        //关闭sqlSession对象
        sqlSession.close();
    }
}

在这里插入图片描述
其他操作请自行测试。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值