3.MyBatis-CRUD操做

何爲CRUD?正則表達式

  • 咱們一般稱爲增刪改查sql

  • 增長(Create)、讀取(Retrieve)、更新(Update)和刪除(Delete)數據庫

3.1 Select語句

第一步:編寫接口session

 //查詢方法
 List<User> fingAll() throws Exception;
 
 User findById(Integer id) throws Exception;

第二步:編寫對應mapper中的sql語句mybatis

  • namespace就很少講了命名空間就是接口對應包名,id就是對應的方法名app

  • 注意這裏SQL語句的佔位符#測試

 <!--resultType返回類型-->
 <select id="fingAll" resultType="User">
    select * from mybatis.user
 </select>
 
 <!--經過id查詢一個user對象-->
 <select id="findById" parameterType="Integer" resultType="User">
    select * from user where id=#{id}
 </select>

第三步:測試atom

 @Test
 public void testFindAll() throws Exception {
     //獲取SqlSession對象
     SqlSession session = MyBatisUtil.getSqlSession();
 
     //調用SqlSession的getMapper方法 傳入接口字節碼文件返回咱們的UserMapper對象
     UserMapper mapper = session.getMapper(UserMapper.class);
 
     //遍歷集合
     List<User> users = mapper.fingAll();
     for (User user : users) {
         System.out.println(user);
    }
 
     //釋放資源
     session.close();
 }
 
 @Test
 public void testFindById() throws Exception {
     //獲取SqlSession對象
     SqlSession session = MyBatisUtil.getSqlSession();
 
     //調用SqlSession的getMapper方法 傳入接口字節碼文件返回咱們的UserMapper對象
     UserMapper mapper = session.getMapper(UserMapper.class);
 
     User user = mapper.findById(5);
     System.out.println(user);
     //釋放資源
     session.close();
 }

 

 

3.2 Insert語句

第一步:編寫接口spa

 //增長方法
 void addUser(User user) throws Exception;

第二步:編寫mapper對應的sql語句對象

  • parameterType指的是參數類型

 <!--添加一個User對象-->
 <insert id="addUser" parameterType="User" >
    insert into user (name,email,phone,gender,password,age,create_time,update_time) values (#{name},#{email},#{phone},#{gender},#{password},#{age},#{create_time},#{update_time});
 </insert>

第三步:編寫測試

  • 這裏須要注意提交事務(不是查詢都須要提交事務)

 @Test
 public void testAddUser() throws Exception {
 
     User user=new User();
     user.setName("楊堦深");
     user.setPhone("1111111111");
     user.setAge(18);
     user.setGender(1);
     user.setPassword("123");
     user.setEmail("1870136088@qq.com");
 
     //獲取SqlSession對象
     SqlSession session = MyBatisUtil.getSqlSession();
 
     //調用SqlSession的getMapper方法 傳入接口字節碼文件返回咱們的UserMapper對象
     UserMapper mapper = session.getMapper(UserMapper.class);
     mapper.addUser(user);
     //提交事務
     session.commit();
     //釋放資源
     session.close();
 }

 

3.3 Delete語句

第一步:編寫接口

 //刪除方法
 void deleteUser(Integer id) throws Exception;

第二步:編寫mapper對應的SQL語句

 <!--刪除一個User對象-->
 <delete id="deleteUser" parameterType="Integer">
    delete from user where id=#{id}
 </delete>

第三步:編寫測試

  • 仍是提醒最易提交事務

 @Test
 public void testDeleteUser() throws Exception {
     //獲取SqlSession對象
     SqlSession session = MyBatisUtil.getSqlSession();
 
     //調用SqlSession的getMapper方法 傳入接口字節碼文件返回咱們的UserMapper對象
     UserMapper mapper = session.getMapper(UserMapper.class);
 
     mapper.deleteUser(5);
 
     session.commit();
     //釋放資源
     session.close();
 }

 

 

3.4 Update語句

第一步:編寫接口

 //修改方法
 Integer updateUser(User user)throws Exception;

第二步:編寫mapper對應的SQL語句

 <!--修改User字段-->
 <update id="updateUser" parameterType="User"  >
    update user set name=#{name},email=#{email},phone=#{phone},gender=#{gender},password={password},age=#{age},create_time=#{create_time},update_time=#{update_time} where id=#{id}
 </update>

第三步:編寫測試

  • 仍是提醒最易提交事務

 @Test
 public void testUpdateUser() throws Exception {
     //獲取SqlSession對象
     SqlSession session = MyBatisUtil.getSqlSession();
 
     //調用SqlSession的getMapper方法 傳入接口字節碼文件返回咱們的UserMapper對象
     UserMapper mapper = session.getMapper(UserMapper.class);
 
     Integer integer = mapper.updateUser(new User(6,"yanggoushen","5201414@qq.com","1515155111",1,"1111",38,null,null));
     System.out.println(integer);
 
     session.commit();
     //釋放資源
     session.close();
 }

 

 

3.5 萬能map

  • 何時用萬能map? 爲何要用萬能map?

  • 當咱們實體類,或者數據庫中表的字段過多,咱們就應當使用map

  • map在公司的開發中用的比較多

 

第一步:編寫接口(咱們這裏就直接用map)

 //增長方法
 void addUser2(Map<String,Object> map) throws Exception;

第二步:編寫mapper對應的sql語句

  • 這裏就給了三個字段

  • parameterType指定的是參數類型

  • 很明顯用map咱們值能夠自定義沒有按照數據庫或者實體類進行限定(也就是直接取出key就能夠了)

 <!--添加一個User對象-->
 <insert id="addUser2" parameterType="map" >
    insert into user (name,age,email) values (#{isName},#{isAge},#{email});
 </insert>

第三步:編寫測試

 @Test
 public void testAddUserMap() throws Exception {
     SqlSession sqlSession = MyBatisUtil.getSqlSession();
     UserMapper mapper = sqlSession.getMapper(UserMapper.class);
 
     Map<String,Object> map= new HashMap<String, Object>();
     map.put("isName","happyday");
     map.put("isAge",11);
     map.put("email","bjfbe@qq.com");
     mapper.addUser2(map);
 
     sqlSession.commit();
     sqlSession.close();
 }

 

 

3.6 模糊查詢

  • 爲何須要模糊查詢?

  • 主要仍是當咱們不肯定某個數據的時候固然也能夠查出數據庫表中具備相同元素的字段

 

第一步:編寫接口

 //模糊查詢
 List<User> findUserLike(String value) throws Exception;

第二步:編寫mapper對應的sql

  • 這裏用到like關鍵字進行模糊查詢

 <!--模糊查詢user集合-->
 <select id="findUserLike"  resultType="User">
    select * from user where name like #{value}
 </select>

第三步:編寫測試

  • 我這裏是拿百分號(%)佔位 也能夠拿(_)下劃線佔位

  • 下劃線是表示佔一個位 百分號表示佔0個或多個位

 @Test
 public void testFindUserLike() throws Exception {
     //獲取SqlSession對象
     SqlSession session = MyBatisUtil.getSqlSession();
 
     //調用SqlSession的getMapper方法 傳入接口字節碼文件返回咱們的UserMapper對象
     UserMapper mapper = session.getMapper(UserMapper.class);
 
     //遍歷集合
     List<User> users = mapper.findUserLike("%y%");
     for (User user : users) {
         System.out.println(user);
    }
     
     //釋放資源
     session.close();
 }

固然也能夠在sql語句中直接使用佔位符寫測試的時候就不用寫了

 select * from user where name like "%"#{value}"%"

 

3.6.1 模糊查詢經常使用的四種表示

  • %:表示任意0個或多個字符。可匹配任意類型和長度的字符,有些狀況下如果中文,請使用兩個百 分號(%%)表示。

  • _: 表示任意單個字符。匹配單個任意字符,它經常使用來限制表達式的字符長度語句:

  • [ ]:表示括號內所列字符中的一個(相似正則表達式)。指定一個字符、字符串或範圍,要求所匹配對象爲它們中的任一個。

 select * from user where realname like '[張蔡王]傑'
 查詢出「張傑」,「蔡傑」,「王傑」(而不是「張蔡王傑」)
  • [^] :表示不在括號所列以內的單個字符。其取值和 [] 相同,但它要求所匹配對象爲指定字符之外的任一個字符。

 select * from user where realname like '[^張蔡王]傑'
 查詢出不姓「張」,「蔡」,「王」的「林傑」,「趙傑」等
相關文章
相關標籤/搜索