Mybatis增删改查案例

今天看到mybatis没事就自己弄了弄,由于使用过hibernate,可以发现他两个还是有很多相似的地方的。

废话不多说进入正题:

1.建立项目,现在我建立的项目都是maven的项目,其实只要是java项目都可以的。导入mybatis和mysql包。maven项目如下:

  
     org.mybatis
     mybatis
     3.4.5
    
    
   
      mysql
      mysql-connector-java
      5.1.45
    

2.新建mybatis的配置文件我使用eclipse新建的是generatorConfig类型的配置文件,但是我没有使用这种类型的配置文件而是使用了如下的配置文件:

  
  
      
      
          
              
              
              
              
                  
                  
                  
                  
                  
              
          
      
  
      
           
          
      
  

3.新建实体类User

package com.mybatis.one;

public class User {
		private int id;
		private String name;
		private String dept;
		private String phone;
		private String website;
		
		public String getWebsite() {
			return website;
		}
		public void setWebsite(String website) {
			this.website = website;
		}
		public int getId() {
			return id;
		}
		public void setId(int id) {
			this.id = id;
		}
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public String getDept() {
			return dept;
		}
		public void setDept(String dept) {
			this.dept = dept;
		}
		public String getPhone() {
			return phone;
		}
		public void setPhone(String phone) {
			this.phone = phone;
		}
		public User(String name, String dept, String phone, String website) {
			super();
			this.name = name;
			this.dept = dept;
			this.phone = phone;
			this.website = website;
		}
		public User(){
			
		}
		@Override
		public String toString() {
			return "User [id=" + id + ", name=" + name + ", dept=" + dept + ", phone=" + phone + ", website=" + website
					+ "]";
		}	
}

4.新建实体类映射文件UserMapper.xml

   
   
      
      
      
      
      
      
      
    
    update user set  name=#{name},phone=#{phone},website=#{website},dept=#{dept}
     where id =#{id}
    
      
      
    
    insert into user(name,phone,website,dept)
     values(#{name},#{phone},#{website},#{dept})
    
    
      
    
    delete from user where id=#{id}
    

5.新建测试类Test

package com.mybatis.one;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
 * @author Yh
 *
 */
public class Test {
 
    public static void main(String[] args) throws IOException {
        String resource = "generatorConfig.xml";
        Reader reader = null;  
        SqlSessionFactoryBuilder factoryBuilder = null;  
        SqlSessionFactory factory = null;  
        SqlSession sqlSession = null;  
        try {  
            // 以字符流的方式读取配置文件  
            reader = Resources.getResourceAsReader(resource);  
            // 准备获取工厂对象  
            factoryBuilder = new SqlSessionFactoryBuilder();  
            // 得到工厂对象  
            factory = factoryBuilder.build(reader);  
            // 获得数据库连接  
            sqlSession = factory.openSession();  
  
            // 查询所有的用户信息 执行查询,传递的参数 是 namespace.id 亲测不用namespace直接使用id也可以
            List usersList = sqlSession  
                    .selectList("firstTest.users");  
            User  users =  null;
            for (User user: usersList) {  
                System.out.println(user.toString());
                users = user;
            }  
              
           
            // 进行登录验证  
            User u = new User();
            u.setName("zhangsan");  
            u.setPhone("1302323322");  
            User user= sqlSession.selectOne(  
                    "firstTest.user", u);  
            if(user != null){
            	System.out.println("存在相对应的数据!");
            }else{
            	System.out.println("不存在相对应的数据!");
            }
            
            User d = new User("zhangsan","dsf","1302325322","http://www.baidu.com");
            int a = sqlSession.insert("firstTest.insertuser", d);
            System.out.println("新增数据返回的值是:"+a);
           
           users.setWebsite("http://www.df.com");
           int b = sqlSession.update("updateuser", users);
           System.out.println("数据修改后的返回值是:"+b);
        
           int  c = sqlSession.delete("deleteuser",2);
           System.out.println("删除数据返回的值是:"+c);
           
        // sqlSession.rollback();//如果数据不提交执行事务回滚的话,前面一切没有提交的操作都将回滚。
           sqlSession.commit();//如果事物不提交,那么修改、新增、删除操作失效,数据不改变
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            if (sqlSession != null) {  
                sqlSession.close();  //关闭SqlSession
            }  
        }  
    }
}

6.我没有配置自动新建表,请自己新建数据库和表。

总结:

SqlSession 中使用selectOne时如果选取的数据有多条,那么将出错。

 

*********************************有什么问题请留言或者私聊,谢谢!********************************************

你可能感兴趣的:(Mybatis)