mybatis实现查询操作及获得添加的ID

  • 接口
/**
     * 获得所有用户
     * @return
     */
    List<User> findAll();

    /**
     * 根据id查询用户
     * @param id
     * @return
     */
    User findById(Integer id);

    /**
     *根据名字模糊查询
     * @param username
     * @return
     */
    List<User> findByName(String username);

    /**
     *查询总记录条数
     * @param
     * @return
     */
    int findTotal();
  • mapper
<!--   获得所有用户-->
    <select id="findAll" resultType="com.itheima.domain.User">
        select * from user;
    </select>

<!--    根据id查询用户-->
    <select id="findById" parameterType="int" resultType="com.itheima.domain.User">
        select * from user where id=#{id};
    </select>

<!--    根据名字模糊查询-->
    <select id="findByName" parameterType="String" resultType="com.itheima.domain.User">
        select * from user where username like #{username}
    </select>

<!--    查询总记录条数-->
    <select id="findTotal" resultType="int">
        select count(id) from user;
    </select>
  • 测试
/**
     * 测试查询所有
     */
    @Test
    public void testSelectAll(){
        List<User> user = userDao.findAll();
        for(User user1 : user){
            System.out.println(user1);
        }
    }

    /**
     * 测试根据id查询user
     */
    @Test
    public void testFindById() {
        User user = userDao.findById(57);
        System.out.println(user);
    }

    /**
     * 测试根据名字模糊查询
     */
    @Test
    public void testFindByName() {
        List<User> list = userDao.findByName("%王%");
        for(User user:list){
            System.out.println(user);
        }
    }

    /**
     * 测试获得总记录条数
     */
    @Test
    public void testFindTotal() {
        int count = userDao.findTotal();
        System.out.println(count);
    }

添加一组数据,同时获得他的id值:last_insert_id()

接口

/**
     * 添加用户
     */
    void saveUser(User user);

mapper

<!--    添加一个用户;同时获得用户的id值-->
    <insert id="saveUser" parameterType="com.itheima.domain.User">

        <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
            select last_insert_id();
        </selectKey>

        insert into user(username,birthday,sex,address)
        values(#{username},#{birthday},#{sex},#{address})
    </insert>

测试

/**
     * 测试添加用户,同时获得添加之后id值
     */
    @Test
    public void testSave(){
        User user = new User();
        user.setUsername("mybatis inserid");
        user.setBirthday(new Date());
        user.setSex("女");
        user.setAddress("香港");

        System.out.println("保存操作之前:" + user);
        userDao.saveUser(user);
        System.out.println("保存操作之后:" + user);

    }

到此这篇关于mybatis实现查询操作及获得添加的ID的文章就介绍到这了,更多相关mybatis获得添加的ID内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决Mybatis查询方法selectById()主键不一致问题

    Mybatis-plus的通用mapper为我们封装了很多方法,我们只需要将interface集成BaseMapper就可以.在BaseMapper中分装了一个方法=>selectById() selectById 这个方法是根据主键id进行查询记录的.返回一条记录.测试如下, 最终调用的是这个方法userDiamondMapper这个接口集成了BaseMapper. 注意这个表的主键就是uid,查询试试 返回结果不如我们预期,打印出的SQL很奇怪,并没有解析正确.猜测是因为无法正确解析出主键.

  • mybatis-plus的selectById(或者selectOne)在根据主键ID查询实体对象的时候偶尔会出现null的问题记录

    mybatis-plus的selectById/selectOne查询结果偶尔出错(为null)的问题记录 错误截图: 亲测重复执行此段代码10次中大概会有连续的2次出现结果为null的情况. 由于后续还需引用到这个查询结果的某些字段信息,会导致程序出现空指针异常,故投机取巧做了如下处理(加了一个while循环让其一直执行selectById(或者selectOne)直到查询结果不为空): 但这终归不是从根本上解决了问题.我也不清白他出现这个问题的根本原因是什么. 到此这篇关于mybatis-p

  • mybatis实现查询操作及获得添加的ID

    接口 /** * 获得所有用户 * @return */ List<User> findAll(); /** * 根据id查询用户 * @param id * @return */ User findById(Integer id); /** *根据名字模糊查询 * @param username * @return */ List<User> findByName(String username); /** *查询总记录条数 * @param * @return */ int f

  • MyBatis多表操作查询功能

    一对一查询 用户表和订单表的关系为,一个用户多个订单,一个订单只从属一个用户 一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户 在只查询order表的时候,也要查询user表,所以需要将所有数据全部查出进行封装SELECT *,o.id oid FROM orders o,USER u WHERE o.uid=u.id 创建Order和User实体 order public class Order { private int id; private Date ordertime;

  • Mybatis中的resultType和resultMap查询操作实例详解

    resultType和resultMap只能有一个成立,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,resultMap解决复杂查询是的映射问题.比如:列名和对象属性名不一致时可以使用resultMap来配置:还有查询的对象中包含其他的对象等. MyBatisConfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configura

  • mybatis and,or复合查询操作

    要查询的sql: select * from user where name = ? and (age=? or city=?): 方法1:不使用Example查询 直接在usermapper.xml中修改sql 方法2:使用Example查询 sql可转换成 select * from user where (name = ? and age=?) or (name=? and city=?): 然后使用Example查询 UserExample example=new UserExample

  • mybatis一对一查询功能

    所谓的一对一查询,就是说我们在查询一个表的数据的时候,需要关联查询其他表的数据. 需求 首先说一个使用一对一查询的小需求吧:假设我们在查询某一个订单的信息的时候,需要关联查询出创建这个订单对应的用户信息.表模型如下( ResultType sql语句的书写 首先,我们要对我们的需求进行分析.1.我们需要确定这个需求需要涉及到哪两张表,其中哪个是主表,哪个是关联表.具体怎么确定,还是看需求--我们的需求是说,在查询订单的时候,顺带着查出创建这个订单的用户.那么,已经很显然了.我们的主表是订单表(o

  • Mybatis模糊查询和动态sql语句的用法

    Mybatis 模糊查询和动态sql语句 模糊查询 对数据库最常用的操作就是查询了,但是如何使用Mybatis进行模糊查询呢?下面先看一个简单的模糊查询 <select id="select01" resultMap="BasicResultMap"> SELECT * FROM oa_employee WHERE emp_name LIKE #{asd} </select> 这是一条伪模糊查询, 因为没有实现真正的模糊 "%&qu

  • mybatis Map查询结果下划线转驼峰的实例

    添加一个配置类MybatisCamelConfig 即可 package com.fpi.notify.config; import com.google.common.base.CaseFormat; import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.wrapper.MapWrapper; import org.apache.ibatis.reflection.wrapper.

  • 如何基于mybatis框架查询数据库表数据并打印

    一.需求说明 使用mybatis框架查询数据库user表数据并打印到控制台上 二.数据库数据准备 -- 创建用户表 create table user ( id int primary key auto_increment, username varchar(20) not null, birthday date, sex char(1) default '男', address varchar(50) ); -- 添加用户数据 insert into user values (null, '孙

  • 老生常谈 MyBatis 复杂查询

    一对一查询 在实际开发中,经常会遇到一对一查询,一对多查询等.这里我们先来看一对一查询.例如:每本书都有一个作者,作者都有自己的属性,根据这个,我来定义两个实体类: public class Book { private Integer id; private String name; private Author author; // 省略 getter/setter } public class Author { private Integer id; private String name

  • Java Fluent Mybatis 分页查询与sql日志输出详解流程篇

    目录 前言 准备数据 Sql日志配置 官方分页查询 PageHelper分页查询 总结 前言 接着我上一章:Java Fluent Mybatis 项目工程化与常规操作详解流程篇 下 上一章我把项目做了一部分工程化包装,主要还是想要之后的调试能够方便一些.那么这一章接着上一章的内容,做一下查询分页,并且将每次请求所调用的sql语句写在日志里面,便于我们观察定位问题.代码之后还是会上传到github. GitHub代码仓库地址:GitHub仓库 准备数据 简单的准备了一些数据. Sql日志配置 之

随机推荐