zoukankan      html  css  js  c++  java
  • mybatis@Mapper接口用法

    mybatis支持的映射方式有基于xml的mapper.xml文件、基于java的使用Mapper接口class,简单学习一下mybatis使用接口来配置映射的方法。
    
    接口方法注解主要是四个:@Insert、@Delete、@Update、@Select

    具体代码

    package com.example.springbootspringmvcdemo.mapper;
    
    import com.example.springbootspringmvcdemo.entity.User;
    import org.apache.ibatis.annotations.*;
    
    @Mapper
    public interface MapperDemo {
        /**
         * 插入记录,手动分配主键
         * @param user
         * @return
         */
        @Insert("INSERT INTO tb_user (id, username,password) values (#{id},#{username},#{password})")
        int addUser(User user);
    
        /**
         * 插入记录,数据库生成主键
         * useGeneratedKeys: 表示要使用自增主键
         * keyProperty: 用来指定主键字段名
         * @param user
         * @return
         */
        @Options(useGeneratedKeys = true,keyProperty = "id")
        @Insert("insert into tb_user (username,password) values (#{username},#{password})")
        int addUserGenerateKey(User user);
    
        /**
         * 删除记录
         * @param id
         * @return
         */
        @Delete("DELETE FROM tb_user WHERE id = #{id}")
        int delete(String id);
    
        /**
         * 修改记录
         * @param user
         * @return
         */
        @Update("UPDATE tb_user set username=#{username},password=#{password} where id =#{id}")
        int update(User user);
    
        @Select("SELECT * FROM tb_user WHERE id=#{id}")
        User loadByIdAutoAlias(String id);
    
        /**
         * 使用ResultMap
         * @param id
         * @return
         */
        @Results(
                id = "userMap", value= {
                @Result(id = true,column = "id",property = "id"),
                @Result(column = "username", property = "username"),
                @Result(column = "password",property = "password")
        }
        )
        @Select("SELECT * FROM tb_user WHERE id=#{id}")
        User loadByIdAutoAlias2(String id);
    }

    单元测试

    package com.example.springbootspringmvcdemo.mapper;
    
    import com.alibaba.fastjson.JSON;
    import com.example.springbootspringmvcdemo.entity.User;
    import org.junit.jupiter.api.Test;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.boot.test.json.JsonbTester;
    
    @SpringBootTest
    public class TestMapperDemo {
    
        private Logger logger = LoggerFactory.getLogger(TestMapperDemo.class);
    
        @Autowired(required = false)
        MapperDemo mapperDemo;
    
        @Test
        public void addUser() {
            User user = new User();
            user.setId(6);
            user.setUsername("hahahah");
            user.setPassword("99999");
            mapperDemo.addUser(user);
        }
    
        @Test
        public void addUserGenerateKey() {
            User user = new User();
            user.setUsername("ewrewrwefsd");
            user.setPassword("ieruwe222222");
            mapperDemo.addUserGenerateKey(user);
        }
    
        @Test
        public void delete() {
            mapperDemo.delete("8");
        }
    
        @Test
        public void update() {
            User user = new User();
            user.setId(5);
            user.setUsername("22211122222222222");
            user.setPassword("333333333333333");
            mapperDemo.update(user);
        }
    
        @Test
        public void loadByIdAutoAlias() {
            User user = mapperDemo.loadByIdAutoAlias("41");
            if (user != null) {
                String string = JSON.toJSON(user).toString();
                logger.info(string);
            } else {
                logger.info("没有查询到数据!");
            }
    
        }
    
        @Test
        public void loadByIdAutoAlias2() {
            User user = mapperDemo.loadByIdAutoAlias2("4");
            if (user != null) {
                String string = JSON.toJSON(user).toString();
                logger.info(string);
            } else {
                logger.info("没有查询到数据!");
            }
        }
    }

    使用的依赖

    <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.49</version>
            </dependency>
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
            </dependency>

     

  • 相关阅读:
    javascript往textarea追加内容
    Java之Comparable接口和Comparator接口
    Java之iterator迭代器和iterable接口
    Java之hashSet实现引用类型的禁止重复功能
    Java之获取系统属性
    Java之String,StringBuffer,StringBuilder类
    Java之sleep和wait的区别
    Android开发之ADT中无Annotation Processin的解决办法
    Android开发之注解式框架ButterKnife在ADT中的设置
    Android开发UI之Action Bar
  • 原文地址:https://www.cnblogs.com/jiayonghua/p/15672048.html
Copyright © 2011-2022 走看看