【SSM_Mybatis】学习笔记02

三、Mybatis架构图(图来自www.siki.com的学习资料)

【SSM_Mybatis】学习笔记02_第1张图片

四、mybatis官网 http://www.mybatis.org/mybatis-3/

1、下载Mybatis,创建项目、导包

【SSM_Mybatis】学习笔记02_第2张图片

 

2、准备数据库、测试用例

import java.util.Date;

/**
 * CREATE TABLE `user` (
  `u_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `u_username` varchar(64) NOT NULL COMMENT '用户名',
  `u_password` varchar(64) DEFAULT NULL COMMENT '用户密码',
  `u_sex` varchar(16) DEFAULT NULL COMMENT '用户性别',
  `u_createTime` datetime DEFAULT NULL COMMENT '用户创建时间',
  `u_cid` int(11) DEFAULT NULL COMMENT '用户国家id',)
 *
 */
public class User {
	private Integer u_id;
	private String u_username;
	private String u_password;
	private String u_sex;
	private Date u_createTime;
	private Integer u_cid;
}

3、主配置文件、映射文件

主配置文件,添加约束已经相关配置信息:




	
  
    
    
      
      
      
        
        
        
        
      
    
  
  
    
  

映射文件,添加约束:


4、编写一个小用例,”通过ID查询用户“。

(1)新建HelloMyBatis

步骤: //读取配置文件,使用inputStream
            //需要SqlSessionFactoryBuilder
           //生产SqlSessionFactory
          //创建SqlSession
        //操作数据库

public class HelloMyBatis {

	//通过ID查询用户
	@Test
	public void test1() throws IOException {
		
		//读取配置文件,使用inputStream
		String resource = "SqlMapperConfig.xml";
	    InputStream in = Resources.getResourceAsStream(resource);
		//需要SqlSessionFactoryBuilder
		SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
		//生产SqlSessionFactory
		SqlSessionFactory ssf = ssfb.build(in);
		//创建SqlSession
		SqlSession sqlSession = ssf.openSession();
		//操作数据库
		//参数:一是操作的SQL语句,二是SQL语句的参数。
        User user = sqlSession.selectOne("UserMapper.selectUserById",1);
        System.out.println(user);
		
	}
    
}

(2)特别说明:这里利用Junit4测试,做法就是在方法前加上@Test注解。

(3)UserMapper.xml加上SQL语句查询标签。


	

注意:可以看到查询测例中的代码,用到了selectOne("这里是UserMapper.xml里的namespace+的id",传进去的查询参数)

(4)最后附上,log4j.properties的代码,用于查看SQL查询中的DEBUG。

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

(5)结果:

附:中间出现了一个SQLException:no suitable driver for ......

结果是因为我的jbdc:mysql:那个语句写少了一个冒号。

5、编写另一个小用例,通过用户名模糊查找用户,利用LIST输出用户。

  //通过用户名模糊查找用户
		@Test
		public void test2() throws IOException {
			
			//读取配置文件,使用inputStream
			String resource = "SqlMapperConfig.xml";
		    InputStream in = Resources.getResourceAsStream(resource);
			//需要SqlSessionFactoryBuilder
			SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
			//生产SqlSessionFactory
			SqlSessionFactory ssf = ssfb.build(in);
			//创建SqlSession
			SqlSession sqlSession = ssf.openSession();
			//操作数据库
			//参数:一是操作的SQL语句,二是SQL语句的参数。
	        List list = sqlSession.selectList("UserMapper.selectUserByName","王");
	        for (User user2 : list) {
				System.out.println(user2);
			}
			
		}

结果:

【SSM_Mybatis】学习笔记02_第3张图片

两个例子,最主要的不同就是#{}占位符与 ${}字符串拼接的不同,两者可互相替换, #{}传递过来的值是‘字符串’

${}传递过来的是字符串中的数据;

接下来,同一个语句且可运行,看看两者的不同:

        select * from user where u_username like '%${value}%'
        select * from user where u_username like "%"#{name}"%"

其中,字符串拼接中的value这个属性是固定的,不能修改,否则会报错。

6、小例子,添加用户

                     User user = new User();
					user.setU_username("Dunka");
					user.setU_password("123456");
					user.setU_sex("女");
					user.setU_createTime(new Date());
					user.setU_cid(1);
					
					sqlSession.insert("insertUser", user);
					//因为前面配置文件,是用JDBC开启事务,事务需要提交事务
					//这里需要添加事务提交语句
					sqlSession.commit();
	
		insert into user values(null,#{u_username},#{u_password},#{u_sex},#{u_createTime},#{u_cid})
	

7、小栗子,通过id删除用户

//操作数据库
						sqlSession.delete("deleteUserById", 13);
						sqlSession.delete("deleteUserById", 14);
						sqlSession.delete("deleteUserById", 15);
						//因为前面配置文件,是用JDBC开启事务,事务需要提交事务
						//这里需要添加事务提交语句
						sqlSession.commit();

	
		delete from user where u_id=#{u_id}
	

 

你可能感兴趣的:(ssm_mybatis)