一、mapper接口中的函數及方法
int insertSelective(User record) 按不為null的字段插入數據
二、ByPrimaryKey的示例
1.selectByPrimaryKey
@Test public void testMapper() throws Exception{ // 4. 創建SqlSession對象 //openSession():若括號里為true,則設置為事務自動提交。若不填則默認手動提交,將自動提交設置成false,然后調用sqlSession.commit()方法。 SqlSession sqlSession = sqlSessionFactory.openSession(true); //5.創建mapper,調用mapper里的方法 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //從數據庫中根據主鍵查詢出Po User user = userMapper.selectByPrimaryKey(6); //Po轉Vo,用於數據展示 UserVo userVo = new UserVo(user); System.out.println(userVo); }
結果
2、insert
(insertSelective對應的sql語句加入了NULL校驗,即只會插入數據不為null的字段值。 insert則會插入所有字段,會插入null。
也就意味着如果定義了表 default 字段,使用 insert 還是會插入 null 而忽略 default,insertSelective 當字段為 null 時會用 default 自動填充)
@Test public void testInsert() throws Exception{ // 4. 創建SqlSession對象 //openSession():若括號里為true,則設置為事務自動提交。若不填則默認手動提交,將自動提交設置成false,然后調用sqlSession.commit()方法。 SqlSession sqlSession = sqlSessionFactory.openSession(true); //5.創建mapper,調用mapper里的方法 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //創建一個實體類Vo並增加其屬性 User user = new User(); user.setId(7); user.setName("周傑倫"); user.setPwd("123456"); userMapper.insert(user); }
結果
三、Example的使用
mybatis的逆向工程中會生成實例及實例對應的example,example用於添加條件,相當where后面的部分
xxxExample example = new xxxExample();
xxxExample.Criteria criteria = example.createCriteria();
示例
1、selectByExample
@Test public void selectByExample(){ // 4. 創建SqlSession對象 //openSession():若括號里為true,則設置為事務自動提交。若不填則默認手動提交,將自動提交設置成false,然后調用sqlSession.commit()方法。 SqlSession sqlSession = sqlSessionFactory.openSession(true); //5.創建mapper,調用mapper里的方法 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //通過criteria構造查詢條件 UserExample userExample = new UserExample(); //構造自定義查詢條件 UserExample.Criteria criteria = userExample.createCriteria(); //查詢Id為 6 的記錄 criteria.andIdEqualTo(6); List<User> userList = userMapper.selectByExample(userExample); for (User user:userList) { UserVo userVo = new UserVo(user); System.out.println(userVo); }
結果
四、總結
對於單表操作的話,逆向工程提供的Mapper接口是可以實現簡單的CRUD的,對於復雜的業務要求則需要我們自己定義Mapper來寫SQL。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
圖片參考【mybatis逆向工程生成的mapper方法使用(有例子)】更詳細