Mybatis特殊SQL的执行

 特殊SQL的执行

  1. 模糊查询

/**
    * 根据用户名模糊查询信息
    */
   List<User> getUserByLike(@Param("username") String username);
<!--     List<User> getUserByLike(@Param("username") String username);-->
   <select id="getUserByLike" resultType="User">
<!--  1.      select * from t_user where username like '%${username}%'-->
<!--  2.字符串拼接      select * from t_user where username like concat('%',#{username},'%')-->
<!--        用的最多的方式-->
       select * from t_user where username like "%"#{username}"%"
   </select>

  2. 批量删除

/**
    * 批量删除
    * 传输过来的参数满足sql语句的条件,删除的时候条件是每一个id中间用逗号进行分隔,所以是id拼接之后的结果ids
    * 批量删除不能使用#{},因为会自动加''号,这样的sql语句是不正确的,所以使用in方式只能通过${}获取参数
    */
   int deleteMoro(@Param("ids") String ids);
<!--    int deleteMoro(@Param("ids") String ids);-->
   <delete id="deleteMoro" >
       delete from t_user where id in (${ids})
   </delete>

  3. 动态设置表名

 /**
    *动态设置表名,查询指定表中的数据
    */
   List<User> getUserBybleName(@Param("tableName") String tableName);

  4. 添加功能获取自增的主键

 

 

/**
    * 添加用户信息
    */
   void inserUser(User user);
<!--     void inserUser(User user);-->
<!--
useGeneratedKeys:设置当前标签中的sql使用了自增的id
keyProperty:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参
             数user对象的某个属性中
-->
   <insert id="inserUser" useGeneratedKeys="true" keyProperty="id">
       insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
   </insert>

//测试方法
   @Test
   public void testGetUserByLike(){
       SqlSession sqlSession = SqlSessionUtils.getSqlSession();//获取SqlSession对象
       SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);//获取当前sqlMapper对象
       List<User> list= mapper.getUserByLike("a");//调用当前方法
       System.out.println(list);
  }

   @Test
   public void testDeleteMoro(){
       SqlSession sqlSession = SqlSessionUtils.getSqlSession();//获取SqlSession对象
       SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);//获取当前sqlMapper对象
       int result = mapper.deleteMoro("1,2,3");
       System.out.println(result);
  }
   @Test
   public void testGetUserByTableName(){
       SqlSession sqlSession = SqlSessionUtils.getSqlSession();
       SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
       List<User> list = mapper.getUserBybleName("t_user");
       System.out.println(list);
  }
   @Test
   public void testInsertUser(){
       SqlSession sqlSession = SqlSessionUtils.getSqlSession();
       SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
       User user=new User(null,"王五","123",23,"男","123@31456.com");
       mapper.inserUser(user);
       System.out.println(user);
  }
 
posted @ 2022-10-27 21:17  zjw_rp  阅读(135)  评论(0)    收藏  举报