欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis特殊SQL的執(zhí)行實例代碼

 更新時間:2023年01月30日 14:17:05   作者:熱愛編程的小白白  
這篇文章主要給大家介紹了關(guān)于MyBatis特殊SQL執(zhí)行的相關(guān)資料,文中通過實例代碼和圖文介紹的非常詳細,對大家學(xué)習或者使用MyBatis具有一定的參考學(xué)習價值,需要的朋友可以參考下

1.模糊查詢

接口:

public interface SelectMapper {
    List<User> getUserByLike(@Param("mohu") String mohu);
}

SQL(錯誤示范):

  <select id="getUserByLike" resultType="com.atguigu.mybatis.pojo.User">
        SELECT * FROM t_user WHERE   PASSWORD  LIKE  '%#{mohu}%'
    </select>

測試:

    public  void  test7(){
        SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
        SqlSession sqlSession = sqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        List<User> userByLike = mapper.getUserByLike("123");
        System.out.println(userByLike);
    }

 運行結(jié)果:

 SQL: SELECT * FROM t_user WHERE   PASSWORD  LIKE  '%?%'

因為:#{}:相當于參數(shù)占位符,且會對自動傳入的數(shù)據(jù)加一個雙引號,外面已經(jīng)有一層引號,所以報錯。

SQL(正確示范,以下3種都行):

  • select * from t_user where password like '%${mohu}%'
  • select * from t_user where password like concat('%',#{mohu},'%')
  • select * from t_user where password like "%"#{mohu}"%"

運行結(jié)果:

2.批量刪除

接口:

  /**
     * 
     * @param ids
     * @return
     */
    int deleteMoreUser(@Param("ids") String ids);

SQL:

    <delete id="deleteMoreUser">
        delete from t_user where id in(${ids})
    </delete>

測試:

    public  void  test8(){
        SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
        SqlSession sqlSession = sqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        int i = mapper.deleteMoreUser("1,2");
    }

表:

 運行結(jié)果:

3.動態(tài)設(shè)置表名  

當有多張表時,例如  VIP表  和  普通表 ,這時需要動態(tài)設(shè)置表名。

接口:

List<User> getAllUser(@Param("tableName") String tableName);

SQL: 

select * from ${tableName} 

注意:不能使用 #{}

select * from #{tableName} 

因為#{} 會自動添加單引號,就變成了:

select * from  '表名'

4.添加功能獲取自增的主鍵

場景模擬:
t_clazz(clazz_id,clazz_name)
t_student(student_id,student_name,clazz_id)
1 、添加班級信息
2 、獲取新添加的班級的 id
3 、為班級分配學(xué)生,即將某學(xué)的班級 id 修改為新添加的班級的 id

接口:

int insertUser(User user);

SQL:

  <insert id="insertUser" useGeneratedKeys="true"  keyProperty="id">
        insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
    </insert>

測試:

    public  void  test9(){
        SqlSessionUtils sqlSessionUtils = new SqlSessionUtils();
        SqlSession sqlSession = sqlSessionUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = new User(null,"小K","183918389",22,"男","13121178@qq.com");
        mapper.insertUser(user);
        System.out.println(user);
    }

效果:

 如果把    useGeneratedKeys       keyProperty 刪除

運行結(jié)果:

發(fā)現(xiàn)id=null

 useGeneratedKeys:設(shè)置使用自增的主鍵

 keyProperty:因為增刪改有統(tǒng)一的返回值是受影響的行數(shù),因此只能將獲取的自增的主鍵放在傳輸?shù)膮?shù)user對象的某個屬性中

總結(jié)

到此這篇關(guān)于MyBatis特殊SQL的執(zhí)行的文章就介紹到這了,更多相關(guān)MyBatis特殊SQL執(zhí)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論