MyBatis的CRUD(增删改查)

MyBatis的CRUD

  1. 查询
    单个参数绑定
    有序参数绑定
    注解参数绑定
    对象参数绑定
    模糊查询
    聚合函数查询
  2. 添加
  3. 删除
  4. 修改

1 查询

1.1 单个参数绑定

什么意思呢,当你查询单表需要查询固定的某条数据就是单个参数
操作如下
①test文件夹下编写对应的测试代码
②在UserMapper类中写出方法
③在UserMapper.xml文件写对应的sql语句

test文件夹下的测试类代码

 /*测试单参数绑定*/
    @Test
    public void findUserById(){
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
       User user = userMapper.findUserById(51);
        System.out.println(user);
    }

在这里插入图片描述

UserMapper接口代码如下

 User findUserById(Integer id);

在这里插入图片描述
UserMapper.xml配置文件代码如下

 <!--单个参数绑定-->
    <!--parameterType:形参是何类型-->
    <select id="findUserById" parameterType="java.lang.Integer" resultType="user">
        SELECT * FROM user WHERE id = #{id}
    </select>

在这里插入图片描述

1.2 有序参数绑定

简单来说,查询条件不止一个,并且实参的顺序不可以更换

步骤
① test文件夹下先写出调用方法
②在UserMapper中写接口
③在UserMapper.xml文件中写SQL语句

test的代码如下

    /*测试有序参数绑定*/
    @Test
    public void findUserByIdAndName(){
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
       User user = userMapper.findUserByIdAndName(51,"一坤年的偶像练习生");
        System.out.println(user);
    }

UserMapper接口代码如下

  User findUserByIdAndName(Integer id, String name);

UserMapper.xml配置文件代码如下,我在这里做了各个组件的详细介绍,可看代码理解

    <!--有序参数绑定-->
    <!--不止一个参数,传参类型不固定就不写 resultType 将返回的数据装到哪儿-->
    <!--同时有序参数绑定需要注意的是
    形参这里不能用昵称 需要使用arg param
    arg以索引为准则,第一个形参为arg0
    param为正常顺序 第一个形参为param1
    -->
    <select id="findUserByIdAndName" resultType="user">
        SELECT * FROM user WHERE id = #{arg0} AND username = #{arg1}
    </select>

1.3 注解传参

注解传参,我们使用@Param进行注解,这样可以解决有序传参中参数位置不可调换的问题,但是需要注意的是,注解名需要和形参名保持一致

步骤
① test文件夹下先写出调用方法
②在UserMapper中写接口
③在UserMapper.xml文件中写SQL语句

test代码如下

    /*测试注解参数绑定*/
    @Test
    public void findUserByIdAndName2(){
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.findUserByIdAndName2(51,"一坤年的偶像练习生");
        System.out.println(user);
    }

UserMapper代码如下

 User findUserByIdAndName2(@Param("id") Integer id , @Param("username") String username);

UserMapper.xml代码如下

   <!--注解参数绑定-->
    <!--注解参数绑定参数位置可以不按顺序-->
    <select id="findUserByIdAndName2" resultType="user">
        SELECT * FROM user WHERE username = #{username} AND id =#{id}
    </select>

1.4 对象参数绑定

我们在查询多条属性的时候可能会有多个需求,使用对象来传参会比较方便

步骤
① test文件夹下先写出调用方法
②在UserMapper中写接口
③在UserMapper.xml文件中写SQL语句

test代码如下

 /*测试对象传参绑定*/
    @Test
    public void findUserPojo(){
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User userParam = new User();
        userParam.setId(51);
        userParam.setUsername("一坤年的偶像练习生");
       User user = userMapper.findUserPojo(userParam);
        System.out.println(user);
    }

UserMapper代码如下

User findUserPojo(User userParam);

UserMapper.xml代码如下

  <!--对象参数绑定-->
    <!--对象传参 我们有参数类型 所有需要填写parameterType类型
    形参依旧是id username 跟实体类保持一致即可
    -->
    <select id="findUserPojo" parameterType="user" resultType="user">
        SELECT * FROM user WHERE id = #{id} AND username = #{username}
    </select>

1.5 Map参数绑定

Map参数绑定利用Map数组进行传参,它实现效果与对象传参一致,根据喜好自行选择

步骤
① test文件夹下先写出调用方法
②在UserMapper中写接口
③在UserMapper.xml文件中写SQL语句

test代码如下

 /*测试map传参绑定*/
    @Test
    public void findUserMap(){
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        HashMap<Object, Object> map = new HashMap<>();
        map.put("id",51);
        map.put("username","一坤年的偶像练习生");
       User user =  userMapper.findUserMap(map);
        System.out.println(user);
    }

UserMapper接口代码如下

 User findUserMap(HashMap<Object, Object> map);

UserMapper.xml配置文件代码如下

 <!--map参数绑定
    map参数绑定中,我们利用map集合传参,有传参类型
    -->
    <select id="findUserMap" parameterType="java.util.Map" resultType="user">
        SELECT * FROM user WHERE id = #{id} AND username = #{username}
    </select>

1.6 模糊查询

根据输入内容,查出含输入内容的所有信息

步骤
① test文件夹下先写出调用方法
②在UserMapper中写接口
③在UserMapper.xml文件中写SQL语句

test代码如下

  /*测试模糊查询*/
    @Test
    public void findUserLikeName(){
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
       List<User> userList =  userMapper.findUserLikeName("张");
        for (User user : userList) {
            System.out.println(user);
        }
    }

UserMapper接口类代码如下

    List<User> findUserLikeName(String username);

UserMapper.xml配置文件代码如下

   <!--模糊查询-->
    <select id="findUserLikeName" parameterType="java.lang.String" resultType="user">
        <!--写法一  利用concat()来实现-->
        <!--
        SELECT * FROM user WHERE username LIKE concat('%',#{username},'%')
        -->
        <!--写法二 利用${}来拼接实现模糊查询-->
        SELECT * FROM user WHERE username LIKE '%${username}%'
    </select>

1.7 聚合查询

查询聚合函数
步骤
① test文件夹下先写出调用方法
②在UserMapper中写接口
③在UserMapper.xml文件中写SQL语句

test文件夹代码如下

 /*测试聚合函数*/
    @Test
    public void testAccount(){
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
       Integer account = userMapper.getAccount();
        System.out.println("总共有"+account+"条数据");
    }

UserMapper接口代码如下

 Integer getAccount();

UserMapper.xml配置文件代码如下

  <!--
    聚合查询
    聚合函数返回值类型为int
    -->
    <select id="getAccount" resultType="java.lang.Integer">
        SELECT COUNT(1) FROM user
    </select>

2 添加

步骤
①test测试类中写测试方法
②UserMapper接口中写方法
③UserMapper.xml配置文件中写sql语句以及相关配置代码

test代码如下

    /*测试添加*/
    @Test
    public void testInsertUser(){
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        User user = new User();
        user.setUsername("旋转陀螺嘎嘎转");
        user.setPassword("111");
        user.setSex("男");
        user.setBirthday(new Date());
        user.setAddress("绝育路");

        userMapper.insertUser(user);
        //提交 默认为回滚事务,无法添加到数据库中
        sqlSession.commit();
        System.out.println(user.getId());
    }

UserMapper接口的代码如下

   void insertUser(User user);

UserMapper.xml配置文件代码如下

   <!--添加语句-->
    <!--添加无返回值-->
    <!--方法二-->
    <insert id="insertUser" parameterType="user" useGeneratedKeys="true" keyProperty="id">
        <!--
        获得自动增长的id值,有两种方法
        -->
        <!--方法一-->
        <!--
        order 是指在添加完成之后还是添加完成之前
        keyProperty:指的获得什么字段
        resultType 老熟人,返回值的类型
          <selectKey order="AFTER" keyProperty="id" resultType="java.lang.Integer">
            SELECT last_insert_id()
        </selectKey>
        -->
        INSERT INTO user(username,password,sex,birthday,address)
        VALUES(#{username},#{password},#{sex},#{birthday},#{address})
    </insert>

3 删除

将数据从数据库中移除
步骤
①test测试类中写测试方法
②UserMapper接口中写方法
③UserMapper.xml配置文件中写sql语句以及相关配置代码

test测试类中代码如下

 /*测试删除*/
    @Test
    public void delUserById(){
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        userMapper.DelUserById(56);
        //数据提交
        sqlSession.commit();
    }

UserMapper接口类方法如下:

 void DelUserById(Integer id);

UserMapper.xml配置文件中代码如下

<!--删除、无返回值类型-->
    <delete id="DelUserById" parameterType="java.lang.Integer">
        DELETE FROM user WHERE id = #{id}
    </delete>

4 修改

修改数据库中指定的数据
步骤
①test测试类中写测试方法
②UserMapper接口中写方法
③UserMapper.xml配置文件中写sql语句以及相关配置代码

test测试类中代码如下

 /*测试修改*/
    @Test
    public void updateUserById(){
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //实例化一个用户对象
        User userParam = new User();
        //更改用户数据
        userParam.setId(50);
        userParam.setUsername("喜羊羊");
        userParam.setPassword("123");
        userParam.setBirthday(new Date());
        userParam.setSex("男");
        userParam.setAddress("轻轻大草原");
        userMapper.UpdateUserById(userParam);
        sqlSession.commit();

    }

UserMapper接口类方法如下:

void UpdateUserById(User userParam);

UserMapper.xml配置文件中代码如下

   <!--修改 无返回值-->
    <update id="UpdateUserById" parameterType="user">
        UPDATE user SET username = #{username},password = #{password},birthday = #{birthday}
        ,sex = #{sex},address = #{address} WHERE id = #{id}
    </update>

下课!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值