如何简单使用mybatis注解

使用注解开发

本质:反射机制实现
底层:动态代理

1、注解在接口上的实现

public interface UserMapper {
    @Select("select * from user")
    List<User> getUsers();
}

2、使用注解时,需要在核心配置文件中绑定接口

 <mappers>
        <mapper class="com.xiao.dao.UserMapper"/>
    </mappers>

3、测试使用

public class UserMapperTest {
    @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();
    }
}

使用注解完成CRUD

只需修改接口和测试类即可。

之前在使用XML的方式进行CRUD操作时,增(insert)、改(update)、删(delete)时,都需要手动进行事务提交操作sqlsession.commit()

查看openSession()的源码



自动提交

查(select)

接口

  @Select("select * from user where id = #{id}")
    User getUserByID(@Param("id") int id);

测试类

public class UserMapperTest {
    @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();

    }
}

增(insert)

接口

 @Insert("insert into user(id,name,pwd) value (#{id},#{name},#{password})")
    int addUser(User user);

实现类

public class UserMapperTest {
    @Test
    public void test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //底层主要靠反射实现
       UserMapper mapper = sqlSession.getMapper(UserMapper.class);
       mapper.addUser(new User(5,"张飞","1456156"));

        sqlSession.close();
    }
}

改(update)

接口

   @Update("update user set name = #{name},pwd=#{password} where id = #{id}")
    int updateUser(User user);

测试类

public class UserMapperTest {
    @Test
    public void test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //底层主要靠反射实现
       UserMapper mapper = sqlSession.getMapper(UserMapper.class);
       mapper.updateUser(new User(5,"赵云","565423"));
       sqlSession.close();
    }
}

删(delete)

接口

@Delete("delete from user where id = #{id}")
    int deleteUser(int id);

测试类

public class UserMapperTest {
    @Test
    public void test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //底层主要靠反射实现
       UserMapper mapper = sqlSession.getMapper(UserMapper.class);
       mapper.deleteUser(5);
       sqlSession.close();
    }
}

到此这篇关于如何简单使用mybatis注解的文章就介绍到这了,更多相关mybatis注解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MyBatis注解方式之@Update/@Delete使用详解

    @Update 1. RoleMapper接口增加接口方法 /** * * * @Title: updateSysRoleById * * @Description: updateSysRoleById * * @param sysRole * @return * * @return: int */ @Update({ "update sys_role set role_name = #{roleName},enabled = #{enabled},create_by = #{createBy}

  • 基于注解的springboot+mybatis的多数据源组件的实现代码

    通常业务开发中,我们会使用到多个数据源,比如,部分数据存在mysql实例中,部分数据是在oracle数据库中,那这时候,项目基于springboot和mybatis,其实只需要配置两个数据源即可,只需要按照 dataSource -SqlSessionFactory - SqlSessionTemplate配置好就可以了. 如下代码,首先我们配置一个主数据源,通过@Primary注解标识为一个默认数据源,通过配置文件中的spring.datasource作为数据源配置,生成SqlSessionF

  • MyBatis使用注解开发和无主配置文件开发的情况

    MyBatis使用注解开发时就不在需要和接口对应的映射文件了 主要有以下几个注解 @Select() @Insert @Update() @Delete() 代码演示 项目结构: 数据库表设计 实体类 User public class User implements Serializable { private long userId; private String userName; private Date birthday; private String sex; private Str

  • mybatis3使用@Select等注解实现增删改查操作

    1.需要的jar包 2.目录树 3.具体代码 一.需要的jar包 第一个:mybatis的jar包 第二个:mysql数据的驱动 二.目录树 三.具体代码 使用框架,配置文件先行! conf.xml:(配置 登录数据库,映射文件) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN

  • Mybatis常见注解有哪些(总结)

    当下,注解非常流行,以前很长篇的代码,现在基本上一个注解就能搞定. 那,在Mybatis中又有哪些注解呢? Mybatis中的注解基本上都在org.apache.ibatis.annotations目录下: @MapperScan 该注解存在着争议,但不可否认的是这个注解确实是Mybatis的注解,是为了集成Spring而写的注解.该注解主要是扫描某个包目录下的Mapper,将Mapper接口类交给Spring进行管理. org.mybatis.spring.annotation.MapperS

  • 解决MyBatis @param注解参数类型错误异常的问题

    问题现象 今天使用mybatis遇到个很奇怪的问题,我使用一个参数@param("threshold"),类型是java的double,但是很奇怪,一直告诉我参数转换错误,int不能转double,我就奇怪了,哪里来的int. 解决办法 我感觉可能使用用到了mybatis的关键字,所以就把threshold换了个名字,果然好了. 问题原因 某些关键词,mybatis会认为是某种类型,下面列出来一些,后面发现再补充. size, threshold, modCount是int类型 loa

  • MybatisPlus 不修改全局策略和字段注解如何将字段更新为null

    mybatis-plus 以下简称mp,目前应该也算是主流的一款数据访问层应用框架.源于其对mybatis 的近乎完美的封装,让我们在使用的时候无比的顺滑, 几乎提供了所有单表操作的方法,大大提升了效率.并且这款框架还是国产的哦,没了解过的可以去了解一下. 回归正题,我们这次来讲一下,怎么样通过mp将数据库中的一个字段更新为null. 可能很多人会觉得奇怪,更新为null, 直接set field = null 不就可以了.这里大家要注意一下,一般情况,我们在使用mp的时候,他的默认策略是空不更

  • mybatis省略@Param注解操作

    项目是Springboot+mybatis,每次写一堆@Param注解感觉挺麻烦,就找方法想把这个注解给省了,最后确实找到一个方法 1.在mybatis的配置里有个属性useActualParamName,允许使用方法签名中的名称作为语句参数名称 我用的mybatis:3.4.2版本Configuration中useActualParamName的默认值为true 源码简单分析: MapperMethod的execute方法中获取参数的方法convertArgsToSqlCommandParam

  • Mybatis注解增删改查的实例代码

    要点 有另一种方法来完成语句映射. 它们映射的语句可以不用 XML 来配置,而可以使用 Java 注解来配置. 使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪. 如果你需要做一些很复杂的操作,最好用 XML 来映射语句. 需要在config.xml中注册Java接口 <mappers> <mapper class="com.mybatis.DAO.PeopleMapper"

  • 详解mybatis @SelectProvider 注解

    01.前言 为什么会写这篇文章, 因为在看到 MapperAnnotationBuilder 构造方法初始化时, 发现了四个从未见过的注解 public MapperAnnotationBuilder(Configuration configuration, Class<?> type) { ... sqlAnnotationTypes.add(Select.class); sqlAnnotationTypes.add(Insert.class); sqlAnnotationTypes.add

随机推荐