Mybatis -- 使用注解去实现CRUD(增删改查)、Mybatis防止Sql注入、@Param( )注解

1. Mybatis–使用注解去实现CRUD(增删改查)

不要默认开启事务提交尽量,万一你的代码有问题,提交上去后果很严重!!!

MybatisUtils.java
// 这里设置为true是默认开启事务提交 return sqlSessionFactory.openSession(true);

package com.tian.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MybatisUtils {
    //    SqlSessionFactory-->session
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
//         第一步: 使用Mybatis获取SqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
    // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
    public static SqlSession getSqlSession() {
    // 这里设置为true是默认开启事务提交
        return sqlSessionFactory.openSession(true);
    }
}

1.1 增加

UserMapper.java

    //    添加用户
    @Insert("insert into user(id,name,pwd) values (#{id},#{name},#{pwd});")
    void addUser(User user);

UserMapperTest.java

    @Test
    public void test02() {
        //        获取SqlSession对象
        try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
//        执行sql
//        方式1: getMapper
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            User user = new User(5, "旭哥", "111");
            mapper.addUser(user);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

运行结果
在这里插入图片描述


1.2 删除

UserMapper.java

    //    删除用户
    @Delete("delete from user where id = #{id}")
    void deleteUser(@Param("id") int id);

UserMapperTest.java

    @Test
    public void test04() {
        //        获取SqlSession对象
        try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
//        执行sql
//        方式1: getMapper
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            // 删除id为1的user
            mapper.deleteUser(1);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

在这里插入图片描述


1.3 修改

UserMapper.java

    //    修改用户
    @Update("update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}")
    void uppdateUser(User user);

UserMapperTest.java

    @Test
    public void test03() {
        //        获取SqlSession对象
        try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
//        执行sql
//        方式1: getMapper
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            mapper.uppdateUser(new User(5, "余余", "11111"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

运行结果
在这里插入图片描述


1.4 查询

方法存在多个参数,所有的参数前面必须加上@Param()注解

UserMapper.java

    //方法存在多个参数,所有的参数前面必须加上@Param("id")注解
    @Select("select * from `mybatis`.`user` where id=#{id} and name=#{name};")
    User getUserByNameAndId(@Param("id") int id, @Param("name") String name);

UserMapperTest.java

    @Test
    public void test() {
        //        获取SqlSession对象
        try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
//        执行sql
//        方式1: getMapper
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            // 查询 id为1 name="无余"的user
            User user = mapper.getUserByNameAndId(1, "无余");
            System.out.println(user);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

运行结果:
在这里插入图片描述


1.5 关于@Param( )注解

  • 基本类型的参数或者String类型,需要加上
  • 引用类型不需要加
  • 如果只有一个基本类型的话,可以忽略,但是建议大家都加上
  • 我们在SQL中引用的就是我们这里的@Param()中设定的属性名
  • #{} 可以防止SQL注入 安全 和 $ {} 不可以防止SQL注入 不安全


Mybatis-Plus是一个基于MyBatis的优秀持久层框架,它简化了数据库操作,并提供了诸如CRUD(Create、Read、Update、Delete)等便捷的功能。对于`tb_manufacturer`表,你可以通过以下步骤进行基本的操作: 1. **创建映射文件**:首先,你需要在项目中的Mapper包下创建一个专门处理`tb_manufacturer`的映射文件,如`ManufacturerMapper.java`。在这个文件里,你会看到一些基础的增删改查方法模板。 ```java public interface ManufacturerMapper { @Insert("INSERT INTO tb_manufacturer(name, address) VALUES(#{name}, #{address})") void insert(Manufacturer manufacturer); @Select("SELECT * FROM tb_manufacturer WHERE id = #{id}") Optional<Manufacturer> selectById(@Param("id") Long id); @Update("UPDATE tb_manufacturer SET name = #{name} WHERE id = #{id}") int updateById(Manufacturer manufacturer); @Delete("DELETE FROM tb_manufacturer WHERE id = #{id}") int deleteById(Long id); } ``` 2. **注入Mapper**:在需要操作数据的服务类或者Repository接口中,通过Spring的依赖注入机制,将`ManufacturerMapper`注入到该类中。 3. **执行操作**:现在你可以通过注入的Mapper实例直接调用上述方法来进行CRUD操作。例如: ```java @Autowired private ManufacturerMapper manufacturerMapper; // 创建一个新的制造商对象并保存 Manufacturer newManufacturer = new Manufacturer(); newManufacturer.setName("厂商名称"); newManufacturer.setAddress("厂商地址"); manufacturerMapper.insert(newManufacturer); // 根据ID查询 Optional<Manufacturer> foundManufacturer = manufacturerMapper.selectById(1L); if (foundManufacturer.isPresent()) { System.out.println(foundManufacturer.get().getName()); } // 更新记录 Manufacturer updatedManufacturer = ... // 获取更新后的对象 manufacturerMapper.updateById(updatedManufacturer); // 删除记录 manufacturerMapper.deleteById(2L); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeJiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值