栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis使用xml进行增删改查代码解析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis使用xml进行增删改查代码解析

MyBatis是支持普通sql查询、存储过程和高级映射的持久层框架。

MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。

MyBatis可以使用 简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects 普通的Java对象)映射成数据库中的记录。

每一个Mybatis应用程序都以一个sqlSessionFactory对象的实例为核心。

sqlSessionFactory对象的实例可以通过sqlSessionFactoryBuilder对象来获得。sqlSessionFactoryBuilder对象可以通过xml配置文件,或从以往使用管理中准备好的Configuration类实例中来构建sqlSessionFactory对象。

【示例:使用配置类获取sqlSessionFactory】
DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
//环境
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映射仍然在 大多数高级映射(比如:嵌套join映射)时需要。

出于这样的原因,如果存在xml配置文件的话,MyBatis将会自动查找和加载一个对等的XML文件(这种情况下,基于类路径下的BlogMapper.class类的类名,那么BlogMapper.xml将会被加载–即class 与 XML在同一个文件目录下。如果非,则需要手动配置加载xml)。

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





     
   
    
    
    
   

   
   
    select * from t_user where id=#{id}
   

   
    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})
   

   

   
    select * from t_user
   

注册到mybatis.xml [当与spring结合时,将不需要这个配置文件]

mybatis的配置文件





  

  
  
    
    
  

  
    
      
      
 
 
 
 
      
    
  

  
    
    
    
  
【2】通过SqlSessionFactory拿到session

这里使用xml文件获取sqlSessionFactory和sqlSession。

public static SqlSessionFactory getFactory(){
	
	String resource = "mybatis.xml";
	
	InputStream inputStream = MybatisUtils.class.getClassLoader().getResourceAsStream(resource);
	SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
	return factory;
}
SqlSession session = factory.openSession(true);
//默认手动提交;
【3】增删改查后台测试代码

@Test
  public void testAdd(){
	SqlSession session = MybatisUtils.getFactory().openSession();
	String statement = "com.web.mapper.userMapper.insertUser";
	
	int insert= session.insert(statement, new User("tom5", 15));
	
	session.commit(true);
	session.close();
	System.out.println("effect rows.."+insert);
}
@Test
  public void testSelect(){
	
	SqlSession session = MybatisUtils.getFactory().openSession(true);
	String statement = "com.web.mapper.userMapper.getUser";
	
	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";
	
	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";
	
	int delete= session.delete(statement, 6);
	
	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";
	
	List users= session.selectList(statement);
	session.commit();
	System.out.println("effect rows.."+users);
	session.close();
}
Tips :

parameterType 和 resultType 为 hashmap :

  • mapper.xml :

    select id,site_id,site_name,site_number,province,city,area,address,internal_number,longitude,latitude
    from tb_site
    --使用动态sql
     
      
 and check_state = #{checkState,jdbcType=INTEGER}
      
      
 and site_id like concat('%',#{siteId},'%')
      
      
 and site_name like concat('%',#{siteName},'%')
      
      
 and site_number like concat('%', #{siteNumber},'%')
      
      
 and province = #{province}
      
      
 and city = #{city}
      
      
 and area = #{area}
      
     
    --添加排序
    
      order by ${sortname} ${sortorder}
    
    --添加分页
    limit ${(page-1)*pagesize},${pagesize}
 
【2】删除方法–根据对象或者Id

如果参数为pojo,mybatis会自动从对象里面获取id ;

  
    delete from tb_user
    where
    id = #{id} 
  

  
    delete from tb_user
    where
    id = #{id} 
  
【3】根据 id list 删除数据
  
    delete from tb_user
    where id in
    --使用foreach
     #{id} 
    
  
【4】getRows

通常与getListPage联合使用。

总结

以上就是本文关于mybatis使用xml进行增删改查代码解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/141753.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号