真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mybatis使用xml進(jìn)行增刪改查代碼解析

MyBatis是支持普通sql查詢、存儲(chǔ)過程和高級(jí)映射的持久層框架。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、興隆臺(tái)網(wǎng)絡(luò)推廣、小程序定制開發(fā)、興隆臺(tái)網(wǎng)絡(luò)營銷、興隆臺(tái)企業(yè)策劃、興隆臺(tái)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供興隆臺(tái)建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com

MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及對(duì)結(jié)果集的檢索封裝。

MyBatis可以使用 簡單的XML或注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects 普通的Java對(duì)象)映射成數(shù)據(jù)庫中的記錄。

每一個(gè)Mybatis應(yīng)用程序都以一個(gè)sqlSessionFactory對(duì)象的實(shí)例為核心。

sqlSessionFactory對(duì)象的實(shí)例可以通過sqlSessionFactoryBuilder對(duì)象來獲得。sqlSessionFactoryBuilder對(duì)象可以通過xml配置文件,或從以往使用管理中準(zhǔn)備好的Configuration類實(shí)例中來構(gòu)建sqlSessionFactory對(duì)象。

【示例:使用配置類獲取sqlSessionFactory】

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
//環(huán)境
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
//映射器類
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

注意這種情況下配置是添加映射器類。映射器類是Java類,這些類包含SQL映射語句的注解從而避免了xml文件的依賴,但是xml映射仍然在 大多數(shù)高級(jí)映射(比如:嵌套join映射)時(shí)需要。

出于這樣的原因,如果存在xml配置文件的話,MyBatis將會(huì)自動(dòng)查找和加載一個(gè)對(duì)等的XML文件(這種情況下,基于類路徑下的BlogMapper.class類的類名,那么BlogMapper.xml將會(huì)被加載–即class 與 XML在同一個(gè)文件目錄下。如果非,則需要手動(dòng)配置加載xml)。

【1】基本增刪改查xml配置

<?xml version="1.0" encoding="UTF-8" ?>




     
   
    
    
    
   

   
   

   
    delete from t_user where id=#{id}
   


   
    update t_user set username=#{name},age=#{age} where id=#{id}
   

   
    insert into t_user(username,age) values(#{name},#{age})
   

   

   

注冊(cè)到mybatis.xml [當(dāng)與spring結(jié)合時(shí),將不需要這個(gè)配置文件]

mybatis的配置文件

<?xml version="1.0" encoding="UTF-8"?>



  

  
  
    
    
  

  
    
      
      
        
        
        
        
      
    
  

  
    
    
    
  

【2】通過SqlSessionFactory拿到session

這里使用xml文件獲取sqlSessionFactory和sqlSession。

public static SqlSessionFactory getFactory(){
	/* flow the src dir*/
	String resource = "mybatis.xml";
	/*MybatisUtils.class.getResourceAsStream(resource)----- it's wrong !!!!
     * please distinguish the two up and down 
     * */
	InputStream inputStream = MybatisUtils.class.getClassLoader().getResourceAsStream(resource);
	SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
	return factory;
}
SqlSession session = factory.openSession(true);
//默認(rèn)手動(dòng)提交;
/*
  兩種解決方式:
  1.factory.opensession(true);
  2.session.commit();
  */

【3】增刪改查后臺(tái)測(cè)試代碼

/*use sql xml not annotation*/
@Test
  public void testAdd(){
	SqlSession session = MybatisUtils.getFactory().openSession();
	String statement = "com.web.mapper.userMapper.insertUser";
	/*return the effect rows*/
	int insert= session.insert(statement, new User("tom5", 15));
	/*default is not auto commit*/
	session.commit(true);
	session.close();
	System.out.println("effect rows.."+insert);
}
@Test
  public void testSelect(){
	/*set auto commit ,which equals to the above*/
	SqlSession session = MybatisUtils.getFactory().openSession(true);
	String statement = "com.web.mapper.userMapper.getUser";
	/*return the effect rows*/
	User user = session.selectOne(statement, 3);
	System.out.println("effect rows.."+user);
}
@Test
  public void testUpdate(){
	SqlSession session = MybatisUtils.getFactory().openSession(true);
	String statement = "com.web.mapper.userMapper.updateUser";
	/*return the effect rows*/
	int update= session.update(statement, new User(3,"tom4", 13));
	System.out.println("effect rows.."+update);
}
@Test
  public void testDelete(){
	SqlSession session = MybatisUtils.getFactory().openSession();
	String statement = "com.web.mapper.userMapper.deleteUser";
	/*return the effect rows*/
	int delete= session.delete(statement, 6);
	/* commit by yourself*/
	session.commit();
	System.out.println("effect rows.."+delete);
	session.close();
}
@Test
  public void testGetUsers(){
	SqlSession session = MybatisUtils.getFactory().openSession();
	String statement = "com.web.mapper.userMapper.getUsers";
	/*return the List*/
	List users= session.selectList(statement);
	session.commit();
	System.out.println("effect rows.."+users);
	session.close();
}

Tips :

parameterType 和 resultType 為 hashmap :

  • mapper.xml :
  • test code :
@Test
  public void getUserForMap(){
	SqlSession session = MybatisUtils.getFactory().openSession();
	String statement = "com.web.mapper.userMapper.getUserForMap";
	HashMap map = new HashMap();
	map.put("id", 1);
	/*return the effect rows*/
	Object selectOne = session.selectOne(statement, map);
	/*default is not auto commit*/
	session.commit(true);
	session.close();
	System.out.println("effect rows.."+selectOne+" ,class :"+selectOne.getClass());
}
  • result as follows :
effect rows..{id=1, age=12, name=luli} ,class :class java.util.HashMap

綜上可知:mybatis 會(huì)根據(jù)參數(shù)類型和結(jié)果類型,自動(dòng)進(jìn)行解析封裝。

【擴(kuò)展 基本方法】

【1】分頁列表

 

【2】刪除方法–根據(jù)對(duì)象或者Id

如果參數(shù)為pojo,mybatis會(huì)自動(dòng)從對(duì)象里面獲取id ;

  
    delete from tb_user
    where
    id = #{id} 
  

  
    delete from tb_user
    where
    id = #{id} 
  

【3】根據(jù) id list 刪除數(shù)據(jù)

  
    delete from tb_user
    where id in
    --使用foreach
     #{id} 
    
  

【4】getRows

通常與getListPage聯(lián)合使用。

總結(jié)

以上就是本文關(guān)于mybatis使用xml進(jìn)行增刪改查代碼解析的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!


分享標(biāo)題:mybatis使用xml進(jìn)行增刪改查代碼解析
轉(zhuǎn)載來源:http://weahome.cn/article/gdshpg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部