使用注解开发

参考视频:【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂 点击观看

文章目录


使用注解开发

1、注解在接口上实现

java 复制代码
package com.findx.dao;

import com.findx.pojo.User;
import org.apache.ibatis.annotations.*;

import java.util.List;
import java.util.Map;

public interface UserMapper {
    //查询所有用户
    @Select("select * from user")
    List<User> getUsers();
    //根据id查询用户
    @Select("select * from user where id = #{id}")
    User getUserById(@Param("id") int id);
    //删除
    @Delete("delete from user where id = #{uid}")
    int deleteUser(@Param("uid") int id);
    //添加
    @Insert("insert into user (id, name, pwd) values (#{id}, #{name}, #{pwd})")
    int addUser(User user);
    //修改
    @Update("update user set name = #{name}, pwd = #{pwd} where id = #{id}")
    int updateUser(User user);
}

2、在配置文件中绑定接口

3、测试使用

java 复制代码
package com.findx.dao;


import com.findx.pojo.User;
import com.findx.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserMapperTest {
    @Test
    //getUsers
    public void getUsers() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = mapper.getUsers();
        for (User user : users) {
            System.out.println(user);
        }
        sqlSession.close();
    }
    @Test
    //getUserById
    public void getUserById() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById(1);
        System.out.println(user);
        sqlSession.close();
    }
    @Test
    //addUser
    public void addUser() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int res = mapper.addUser(new User(11, "findx", "123456"));
        if (res > 0) {
            System.out.println("插入成功");
        }
        //sqlSession.commit();设置为true之后就不需要手动提交事务了
        sqlSession.close();
    }
    @Test
    //updateUser
    public void updateUser() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int res = mapper.updateUser(new User(5, "f111", "123456"));
        if (res > 0) {
            System.out.println("更新成功");
        }
        sqlSession.close();
    }
    @Test
    //deleteUser
    public void deleteUser() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int res = mapper.deleteUser(11);
        if (res > 0) {
            System.out.println("删除成功");
        }
        sqlSession.close();
    }
}

Mybatis详细的执行流程


事务自动提交

将getSqlSession方法返回的 sqlSessionFactory.openSession();加入参数设置为true

@Param()注解

@Param()注解用于给方法参数起一个名字。当方法存在多个参数的情况下,建议一定要加上@Param()注解给参数命名。在SQL中引用的就是在@Param()这里设定的属性名字。

基本类型或者String类型需要加上并且引用类型不需要加上

#{}与${}的区别

#{}方式能够很大程度防止sql注入(安全),${}方式无法防止Sql注入。

Lombok的使用

1、在idea中安装Lombok的插件

2、在项目中导入Lombok的jar包

3、在实体类上加注解


相关推荐
天空鸟_时光不老16 小时前
13-亮点提炼:把技术说辞翻译成业务价值
java·spring boot·spring·spring cloud·mybatis
禾小西2 天前
Redis AOF 日志:宕机了,如何避免数据丢失?
java·redis·mybatis
天空鸟_时光不老2 天前
09-RAG问答系统落地:从默认分割器的坑到Milvus召回调优
java·人工智能·spring boot·spring·spring cloud·maven·mybatis
西凉的悲伤2 天前
MyBatis 中 association 与 collection 详解
java·mybatis
天空鸟_时光不老2 天前
10-Agent安全隐患与SQL执行层加固
java·数据库·人工智能·sql·spring·maven·mybatis
jianjinwssy3 天前
MyBatis-Plus 从入门到实战:常用功能与核心原理
java·mybatis
ss2733 天前
AI全栈实战 | 3.6-01 数据库与 ORM:学过 MyBatis 再看 SQLAlchemy,才知道“半自动“和“全自动“差在哪
数据库·mybatis
代码什么用7 天前
使用javassist生成类 && MyBatis中接口代理机制及使用
mybatis
paopaokaka_luck7 天前
非遗文物数字化小程序(AI非遗问答、ONNX图像识别、协同过滤推荐、ECharts数据分析、非遗知识浏览与互动、文创商城订单闭环、文化活动报名签到、社区交流)
javascript·spring boot·mysql·数据分析·echarts·mybatis
韩曙亮7 天前
【JavaEE】MyBatis 基本用法 ⑤ ( 单条件查询 | 多条件查询 | 多条件动态查询 | 单条件动态查询 )
java·sql·java-ee·mybatis·mapper·sql映射