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>

     

  • 相关阅读:
    自然语言处理一些读书笔记和自己的思考。
    文本情感分析的基础在于自然语言处理、情感词典、机器学习方法等内容。以下是我总结的一些资源。
    自然语言处理哪家强?
    2016,2017中国高考状元调查报告 教师公务员家庭最盛产状元
    书籍装帧知识: 封面 封里 封底 书脊 书冠 书脚 扉页 插页 篇章页目录 版权页 索引 版式 版心 版口 超版口 直(竖)排本 横排本 刊头 破栏 天头 地脚 暗页码 页 另页起 另面起 表注 图注 背题
    How to intercept any postback in a page?
    HearthBuddy卡组
    Button.OnClientClick
    Async Task Types in C#
    ILSpy C# language support status
  • 原文地址:https://www.cnblogs.com/jiayonghua/p/15672048.html
Copyright © 2011-2022 走看看