Mybatis_注解开发超详细讲解

本文详述了Mybatis的注解开发,包括查询、DML操作、动态SQL、映射处理、多表关联查询,并对比了注解与映射配置文件的使用。通过对UsersMapper接口的修改和测试类的创建,展示了从查询所有用户到复杂的一对一、一对多关联查询的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录


一、Mybatis 注解的使用

在 Mybatis 中如果使用注解式开发,那么注解需要添加在 Mapper 接口中的抽象方法上,在注解中给定需要执行的 SQL 语句即可,这样就可以不需要映射配置文件。MyBatis 支持纯注解方式,支持纯映射配置文件方式,也支持注解和映射配置文件混合形式。当只有接口没有映射配置文件时在 mybatis-cfg.xml 中对于引入映射可以通过加载指定接口类。也可以使用指定加载的包。

二、 使用注解完成查询

1、查询所有用户

1.1、 修改 UsersMapper 接口

public interface UsersMapper {
   
    @Select("select * from users")
    List<Users> selectUsersAll();
}

1.2、 创建测试类

public class SelectUsersAllTest {
   
    public static void main(String[] args) {
   
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class);
        List<Users> list = usersMapper.selectUsersAll();
        list.forEach(System.out::println);
    }
}

2、注解式开发时的参数传递

2.1、 顺序传参法

    //顺序传参法
    @Select("select * from users where username = #{param1} and usersex = #{param2}")
    List<Users> selectUsersByNameAndSexOrder(String username,String usersex);

    @Select("select * from users where username = #{name} and usersex = #{sex}")
    List<Users> selectUsersByNameAndSexOrder2(@Param("name") String username, @Param("sex") String usersex);

2.2、 POJO 传参法

    //POJO传参法
    @Select("select * from users where username = #{username} and usersex = #{usersex}")
    List<Users> selectUsersByNameAndSexPOJO(Users users);

2.3、 Map 传参法

    //Map传参法
    @Select("select * from users where username = #{keyname} and usersex = #{keysex}")
    List<Users> selectUsersByNameAndSexMap(Map<String ,String >map);

三、使用注解完成DML操作

1、实现添加用户操作

1.1、修改UsersMapper接口

    //添加用户
    @Insert("insert into users values(default,#{username},#{usersex})")
    int insertUsers(Users users);

1.2、创建测试类

public class InsertUsers2Test {
   
    public static void main(String[] args) {
   
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class);
        Map<String ,String > map = new HashMap<>();
        map.put("name","yiyi");
        map.put("sex","famale");
        int flag = usersMapper.insertUsers2(map);
        System.out.println(flag);
        sqlSession.commit();
    }
}

2、实现用户更新操作

2.1、修改UsersMapper接口

    @Update("update users set userid = #{id},username = #{name},usersex =#{sex} where username = #{prename}")
    int updateUsers2(Map<String,String>map);

2.2、创建测试类

public class UpdateUsers2Test {
   
    public static void main(String[] args) {
   
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class);
        Map<String,String> map = new HashMap<>();
        map.put("id","3");
        map.put("name","nine");
        map.put("sex","female");
        map.put("prename","kkkkkkkkkkk"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值