MyBatis各种SQL操作及执行添加功能获取自增的主键

目录

一、查询一个实体类对象

二、查询一个List集合

三、查询单个数据

四、查询一条数据及多条数据到map集合

查询一条数据到map集合

查询多条数据到map集合

五、模糊查询

六、批量删除

七、动态设置表名

八、执行添加功能时获取自增的主键


一、查询一个实体类对象

映射方法:User getUserById(@Param("id") int id);

映射文件:

二、查询一个List集合

映射方法:List getAllUser();

映射文件

注意:当查询的数据为多条时,不能使用实体类作为返回值,否则会抛出异常
TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值

三、查询单个数据

映射方法:int getCount();

映射文件:

四、查询一条数据及多条数据到map集合

查询一条数据到map集合

映射方法:Map getUserToMap(@Param("id") int id);

映射文件:

注意:将一条数据查询到map集合中时,map的键是表中的字段名,map的值是表中的数据

查询多条数据到map集合

方式一:

映射方法:List> getAllUserToMap();

映射文件:

方式二:

映射方法:

@MapKey("id")
Map getAllUserToMap();

映射文件:

注意:

● 方式一中每条查出来的数据都对应一个Map集合,然后再利用List集合将这些Map集合
组织起来
● 方式二中每条查出来的数据都存放在一个Map集合中,但是这个Map集合的键由映射方
法上方的@MapKey注解指定,而Map集合的值又是另外一个Map集合,作为值的Map
集合中键对应表中字段名,值对应表中数据

五、模糊查询

映射方法:List getUserByLike(@Param("mohu") String mohu);

映射文件:

注意:不能使用 like '%#{mohu}%' 的方式,因为#{}会被解析成?,这个问号会被当成字符串的一
部分造成参数获取失败

六、批量删除

映射方法:void deleteSomeUser(@Param("ids") String ids);

映射文件:


    delete from t_user where id in(${ids})

注意:这里获取参数的方式是${},因为#{}会自动添加引号,如果使用#{}的方式会造成SQL语句解
析成 delete from t_user where id in('ids') 从而报错

七、动态设置表名

映射方法:List getUserList(@Param("table") String table);

映射文件:

注意:这里使用${}是因为使用#{}时会自动添加引号,而表名不允许添加表名

八、执行添加功能时获取自增的主键

映射方法:void insertUser(User user);

映射文件:


    insert into t_user values(null,#{username},#{password},#{age},#
{gender},#{email})

测试方法:

@Test
public void testInsertUser(){
    SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
    User user = new User(null,"老六","1234567",36,"男","[email protected]");
    mapper.insertUser(user);
    System.out.println(user);//在这一步中打印出的User对象中可以看到自增的id,如果配置文件中不使    用useGeneratedKeys和keyProperty,则id仍然是null
    }

注意:这里的useGeneratedKeys设置使用自增主键为true,keyProperty是将获取的主键值赋给实体对象中的某个属性。这样,在添加这个实体对象后,自增的主键也能在实体对象中获得,而不需要进行查询

你可能感兴趣的:(MyBatis,sql,java,mybatis,开发语言,服务器)