java ssm框架学习——mybatis--1

MyBatis

1.  MyBatis介绍

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。     MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。


MyBatis快速入门

1.1. 导入myBatis jar包
java ssm框架学习——mybatis--1_第1张图片
1.1.1.  配置MyBatis核心配置文件SqlMapConfig.xml
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
    
    
    
    
        
            
            
            
            
                
                
                
                
            
        
    

 

1.2. 配置db.properties文件

 

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/myfirstdb?characterEncoding\=utf-8
jdbc.username=root
jdbc.password=root

1.3. 配置log4j.properties文件

# 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

1.4. 创建bean类

public class User {
private Integer id;
private String username;
private String password;
private String sex;

2.  测试

2.1. 配置bean.xml

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

 

2.2. 配置文件中添加引用

2.3. 测试查询

2.3.1.  bean.xml中定义查询的方法

 

2.3.2.  定义工厂测试准备方法

      
  // 会话工厂
private SqlSessionFactory sqlSessionFactory;
@Before
public void createSqlSessionFactory() throws IOException {
    // 配置文件
    String resource = "SqlMapConfig.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    // 使用SqlSessionFactoryBuilder从xml配置文件中创建SqlSessionFactory
    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}

 

 

 

2.3.3.  测试查询单个

@Test
public void testQuery() {
    SqlSession openSession = sqlSessionFactory.openSession();
    User user = openSession.selectOne("test.selectUserById", 5);
    System.out.println(user.toString());
    openSession.close();
}

 

 

 

2.3.4.  测试查询所有

@Test
public void testQueryList() {
    SqlSession openSession = sqlSessionFactory.openSession();
    List user = openSession.selectList("test.selectUser");
    for (User user2 : user) {
        System.out.println(user2.toString());
}
openSession.close();
}

2.3.5.  测试模糊查询

    insert into t_user
    (username,password,sex) values(#{username},#{password},#{sex});
 
@Test
public void testInsert() {
    SqlSession sqlSession = sqlSessionFactory.openSession();
    User user = new User("王五", "123", "男");
    sqlSession.insert("test.saveUser", user);
    sqlSession.commit();
    sqlSession.close();
}

2.3.6.  查询总结

#{}表示一个占位符号,
通过#{}可以实现preparedStatement向占位符中设置值,
自动进行java类型和jdbc类型转换,#{}括号中可以是value或其它名称
${}表示拼接sql串${}括号中只能是value。
传入的内容拼接在sql中且不进行jdbc类型转换。

parameterType:指定输入参数类型
resultType:指定输出结果类型

2.4. 测试添加

update t_user set
username=#{username},password=#{password},sex=#{sex} where id=#{id}
 
@Test
public void testUpdate() {
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User("王小九", "1234", "女");
user.setId(5);
sqlSession.update("test.updateUser", user);
sqlSession.commit();
sqlSession.close();
}

 

2.5. 测试修改

delete from t_user where id=#{a}
@Test
public void testDelete() {
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.delete("test.deleteUser", 1);
sqlSession.commit();
sqlSession.close();
}

2.6. 测试删除

delete from t_user where id=#{a}
@Test
public void testDelete() {
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.delete("test.deleteUser", 1);
sqlSession.commit();
sqlSession.close();
}

 

2.7. 插入数据并获取id

    
    
        select
        LAST_INSERT_ID()
    
    insert into t_user
    (username,sex,age) values
    (#{username},#{sex},#{age});
    
 

 

 

2.8. 插入UUID类型的主键

    
    
        select
        uuid()
    
    insert into t_person
    (id,username,sex,age) values
    (#{id},#{username},#{sex},#{age});

你可能感兴趣的:(javaEE高级框架,框架,mybatis)