MyBatis框架的简单操作数据库

1,简单介绍一下mybatis框架,Mybatis是Apache的一个开源项目——iBatis,2010年这个项目迁移到Google Code,并改名为MyBatis.

  MyBatis是一个基于java的持久层框架。MyBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO),它消除了几乎所有的JDBC代码和参数的手工设置,以及结果的检索。MyBatis使用简单的XML或注解用于配置和原始的映射,将接口和java的POJOs映射成数据库中的记录。  

  目前,java的持久层框架产品有许多,常见的有hibernate和mybatis.mybatis是一个半自动映射的框架,因为Mybatis需要手动匹配POJO、SQL和映射关系,而和hibernate是一个全表映射的框架,只需提供pojo和映射关系即可。没有mybatis是一个小巧、方便、高效、简单、直接、半自动化的持久层框架 ,hibernate是一个强大、方便、高效、复杂、间接、全自动化的持久层框架。两个框架各有特点,需要根据情况选择合适的框架。

框架配置:建立一个普通的工程即可,然后建立一个lib文件夹

    (1)导包:导入一下的jar包

MyBatis框架的简单操作数据库_第1张图片

        (2)编写一个普通的POLO类与数据库对应 。

package cn.zhong.mybatis.user;

public class User {
	private int  id;
	private String loginName;
	private String loginPwd;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getLoginName() {
		return loginName;
	}
	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}
	public String getLoginPwd() {
		return loginPwd;
	}
	public void setLoginPwd(String loginPwd) {
		this.loginPwd = loginPwd;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", loginName=" + loginName + ", loginPwd=" + loginPwd + "]";
	}
}

    (3)使用mybatis 框架,每一个对象都需要一个对应的mapper配置文件与之对应。





    
    
    
        insert into User(loginName,loginPwd) values(#{loginName},#{loginPwd})
    
    
        update User set loginName = #{loginName},loginPwd=#{loginPwd} where id = #{id}
    
    
        delete from User where id = #{id}
    

    (4)编写一个主配置文件,里面包函数据库连接的信息,和把上面的映射文件放到配置文件中去。




    
         
             
             
                
                
                
                
             
         
    
    
        
    

    (5)上面的配置完毕,应该就是测试了,测试的步骤和hibernate差不多,比较简单。

//select * from User 查询表的所有;
	@Test
	public void fun2() throws IOException{
		
		//加载文件
		InputStream config= Resources.getResourceAsStream("sqlMapConfig.xml");
		// 用文件构建 SqlSessionFactory
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config); 
		//用工厂建立,Session 
		SqlSession ss = ssf.openSession();
		List list = ss.selectList("cn.zhong.mybatis.user.UserMapper.selectAllUser");
		System.out.println("********************************");		
		for (User user : list) {
			System.out.println(user);
		}
	}
//单个查询,和插入一条数据,放在一起了	
@Test
	public void fun1() throws IOException{
		//加载文件
		InputStream config= Resources.getResourceAsStream("sqlMapConfig.xml");
		// 用文件构建 SqlSessionFactory
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config); 
		//用工厂建立,Session 
		SqlSession ss = ssf.openSession();
		
		User mu = ss.selectOne("cn.zhong.mybatis.user.UserMapper.selectUserById", 1);
		System.out.println(mu);
		User addmu = new User();
		addmu.setLoginName("Jeck");
		addmu.setLoginPwd("456");
		// 插入一组数据
		ss.insert("cn.zhong.mybatis.user.UserMapper.adduser", addmu);
		ss.commit();
		ss.close();
	}
//更新数据
	@Test 
	public void fun3() throws IOException{
		//加载文件
		InputStream config= Resources.getResourceAsStream("sqlMapConfig.xml");
		// 用文件构建 SqlSessionFactory
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config); 
		//用工厂建立,Session 
		SqlSession ss = ssf.openSession();
		
		User updateUser = new User();
		updateUser.setId(8);
		updateUser.setLoginName("张兰");
		updateUser.setLoginPwd("789");
		System.out.println(updateUser);
		ss.update("cn.zhong.mybatis.user.UserMapper.updataId",updateUser);
		System.out.println(updateUser);
		ss.commit();
		ss.close();
		
	}
	//删除数据
	@Test
	public void fun4() throws IOException{
		//加载文件
		InputStream config= Resources.getResourceAsStream("sqlMapConfig.xml");
		// 用文件构建 SqlSessionFactory
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config); 
		//用工厂建立,Session 
		SqlSession ss = ssf.openSession();
		User deleteUser = new User();
		deleteUser.setId(8);
		ss.delete("cn.zhong.mybatis.user.UserMapper.deleteUser",deleteUser);
		ss.commit();
		ss.close();
	}

总结:测试的时候我没有把所有的增删改查放到一个方法中,所有整体看起来代码比较多,重复的比较多,个人喜欢分类,宁愿复杂一点。这个配置比较简单,没啥说的。

源码

你可能感兴趣的:(java,java-MyBatis)