MyBatis-起始

Mybatis:

一种简化sql操作的持久层框架,开发只需要关注具体的sql语句即可

传统的JDBC: 1.操作sql 2.操作 Connection、Statment(向数据库发送sql的一个对象)、ResultSet等

ORM框架: 对象关系匹配,把关系数据库中的数据转换成面向对象程序中的对象

hibernate(全自动sql)和mybatis(自定义sql)

1.pom中引入依赖

mybais只要这一个依赖就完成了

     org.mybatis
     mybatis
     3.4.6

    
但是需要操作数据库,因此引入连接数据库驱动

         mysql
      mysql-connector-java
      8.0.26

 
再加一个测试类的依赖用于测试

      junit
      junit
      4.12
      test

2.mybatis.xml

编写myBatis核心配置文件(放在resource目录下)






    
        
            
            
                
                
                
                
            
        
    

    
    
        
    

3.pom中引入mapper.xml

为了能够加载到java文件夹下的mapper的xml文件

   
      
         src/main/java
                
                    **/*.xml
                
            
        

4.写java代码

pojo/mapper/test

User

public class User implements Serializable {

    private Long id;
    private String name;
    private Integer points;
    private String phone;
    private Timestamp regTime;

    public User(Long id, String name, Integer points, String phone, Timestamp regTime) {
        this.id = id;
        this.name = name;
        this.points = points;
        this.phone = phone;
        this.regTime = regTime;
    }

    public User() {
    }
}

UserMapper

public interface UserMapper {

    void   add(User user);

    void deleteById(Long id);

    void  update(User user);

    List selectAll();
}

UserMapper.xml




    
    
        insert into `user` (`name`,`phone`,`regTime`) values (#{name},#{phone},#{regTime})
    

    
        delete from `user` where id=#{id}
    

    
        update `user` set `name`=#{name},`phone`=#{phone},`regTime`=#{regTime}
    

    

Test

public class TestUser {

    UserMapper mapper=null;
    SqlSession sqlSession = null;
    @Before
    //为了获取sqlSession
    public void init() throws IOException {
        //Resources:mybatis提供的一个文件流读取工具
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
        //实例化一个构建器
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        //通过builder得到一个工厂对象
        SqlSessionFactory factory = builder.build(resourceAsStream);
        //通过openSession得到会话对象,默认为手动提交事务
        //SqlSession 提供了在数据库执行 SQL 命令所需的所有方法
        sqlSession= factory.openSession();

        //获得mapper接口的代理对象
        mapper= sqlSession.getMapper(UserMapper.class);
    }

    @Test
    public void add(){

        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        User user = new User("测试",0,"7898",timestamp);

        //获得代理对象再调方法
        mapper.add(user);

        //sqlSession自带的方法,同样有增删改查,statement参数(第一个参数)要与接口中的方法名一致
        sqlSession.insert("add", user);

        sqlSession.commit();
    }

    @Test
    public void deleteById(){
        mapper.deleteById(37L);
        sqlSession.commit();
    }

    @Test
    public void update(){
        Timestamp timestamp1 = new Timestamp(System.currentTimeMillis());
        User user1 = new User(44L,"测试4",0,"+65+6565+",timestamp1);
        sqlSession.update("update", user1);
        sqlSession.commit();
    }


    @Test
    public void selectAll(){

        List maps = mapper.selectAll();
        System.out.println(maps.size());
        for (Map map : maps) {
            System.out.println(map);
        }
    }

}

遇到的坑:

1.没有spring管理的时候,想要mapper对象需要自己创建sqlSession

2.没有在pom中引入xml文件,报找不到UserMapper.xml的错

标签配置解析:

mappers: 映射器 , UserMapper.xml文件中配置 映射到具体的Mapper.xml文件

 
    
        
    

namespace:用于绑定Dao接口


    ...

environments:环境配置集合 可以配置多种数据库

environment:环境配置 具体的实现

连接池:服务器端一次性向数据库创建多个连接,并将多个连接保存在一个连接池对象当中,下次有请求操作数据库时,直接从连接池获得一个连接,使用完后不关闭而是继续放回连接池当中 ,可节省创建连接/释放连接的资源

//default: development开发模式 work工作模式

 //id: 指定当前环境的唯一标识
        
//transactionManager:事务管理器 type: JDBC-使用JDBC原生的事务管理方式,提交和回滚都需要手动
            
//datasource: 数据源 type: POOLED-使用连接池
            
//property:属性, 连接四大件 连接驱动,url,用户名,密码
                
//useSSL:SSL协议用于保证数据安全和正确,默认true
                
                
                
            
        
    

你可能感兴趣的