SSM框架---MyBatis的简单示例(二)

一、MyBatis核心jar包:

二、核心配置文件sqlMapConfig.xml

注:配置文件的所有内容包括文件本身,在进行spring整合后都已废除。





	
	
		
    	
    	
		
	

	
	
		
			
			
			
			
				
				
				
				
			
		
	
	
	
	
		
	
	

 解决了JDBC本身的缺陷:

1、涉及到重复创建链接和释放链接,造成资源浪费。解决方式:使用连接池 ------> 使用了数据库连接池
2、出现硬编码。体现在:数据库驱动,url、用户名密码、sql。解决方式:使用配置文件 ------> 引入数据源配置文件jdbc.properties
3、结果获取不方便。解决方式:把结果放到一个POJO中 ------> 实现

三、配置sql映射文件xxxMapper.xml

创建对应的POJO和映射文件PojoMapper.xml





   
   
   
   
   
   	
    insert into t_user(id,USERNAME,BIRTHDAY,SEX,ADDRESS) values(#{id},#{username},#{birthday},#{sex},#{address})
   
    
   
    update t_user set birthday=#{birthday},address=#{address} where id = #{id}  
   
   
   
   	delete from t_user where id = #{id}
   
  • namespace 命名空间,用于隔离sql语句
  • #{}:占位符:如果传入的是字符串,预编译时会自动带上单引号;
  • ${}:连接符:如果传入的是基础数据类型,也就是string,long,double,int,boolean,float等     大括号只能写value,即${value};    
  •                    如果传入的是pojo或者map类型,                       大括号只能写属性名或key名,即${username};

    能使用#{}的时候尽量使用#{},不使用${};                   ${}用的很少,也就模糊查询
    #{}相当于jdbc中的preparedstatement(预编译),${}是直接使用里面的值进行拼接,有可能会有SQL注入问题

四、JUnit测试

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import java.util.UUID;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import com.ly.mybatis.pojo.User;

public class UserTest {
	SqlSessionFactory sqlSessionFactory = null;
	
	@Before
	public void init() throws IOException {
		//1、创建sqlSessionFactory工厂
		SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new  SqlSessionFactoryBuilder();
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
	}
	@Test
	public void testFindUserById() throws IOException {
		//2、开启sqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//3、使用sqlSession方法
		User user = sqlSession.selectOne("findUserById", 10);
		System.out.println("结果:"+user);
		//4、关闭sqlSession
		sqlSession.close();
	}
	
	@Test
	public void testfindUserByUsername() throws IOException {
		//2、开启sqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//3、使用sqlSession方法
		List list = sqlSession.selectList("findUserByUsername", "张");
		System.out.println("结果2:"+list);
		//4、关闭sqlSession
		sqlSession.close();
	}
	
	@Test
	public void testInsertUser() throws IOException {
		//2、开启sqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//3、使用sqlSession方法
		User user = new User();
		System.out.println("结果3--UUID测试:"+UUID.randomUUID().toString());
		user.setId(2);
		user.setUsername("yanyan");
		user.setBirthday(new Date());
		user.setSex("2");
		user.setAddress("永杰北路");
		sqlSession.insert("insertUser", user);
		sqlSession.commit();//不要忘了提交
		//4、关闭sqlSession
		sqlSession.close();
	}
	
	
	@Test
	public void testUpdateUser() throws IOException {
		//2、开启sqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//3、使用sqlSession方法
		User user = new User();
		user.setId(2);
		user.setBirthday(new Date());
		user.setAddress("永杰北路2222444");
	    sqlSession.update("updateUser", user);
		sqlSession.commit();//不要忘了提交
		System.out.println("结果4--");
		//4、关闭sqlSession
		sqlSession.close();
	}
	
	@Test
	public void testDeleteUserById() throws IOException {
		//2、开启sqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//3、使用sqlSession方法
	    sqlSession.delete("deleteUserById", 2);
		sqlSession.commit();//不要忘了提交
		System.out.println("结果5--");
		//4、关闭sqlSession
		sqlSession.close();
	}

}

 

 

你可能感兴趣的:(Web与JavaEE,SSM框架)