Mybatis Day01

功能:在dao持久层操作数据库,用于简化JDBC的开发

JDBC

  • 使用java语言操作关系型数据库的api
  • 各个数据库厂商提供数据库驱动jar包
public void testJdbc() throws Exception {
        //1. 注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2. 获取连接对象
        String url = "jdbc:mysql://localhost:3306/mybatis_";
        String username = "root";
        String password = "1234";
        Connection connection = DriverManager.getConnection(url, username, password);

        //3. 获取执行SQL的对象Statement,执行SQL,返回结果
        String sql = "select * from user";
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);

        //4. 封装结果数据
        List userList = new ArrayList<>();
        while (resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            short age = resultSet.getShort("age");
            short gender = resultSet.getShort("gender");
            String phone = resultSet.getString("phone");

            User user = new User(id,name,age,gender,phone);
            userList.add(user);
        }

        userList.stream().forEach(user -> {
            System.out.println(user);
        });

        //5. 释放资源
        statement.close();
        connection.close();
    }

 硬编码:sql需要改变用户名和密码,编译时间成本很高

封装:封装需要一个字段一个字段封装,繁琐

频繁获取资源、释放资源:资源浪费

MyBatis对比JDBC

resources.application.properties 

#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=123456

main.java.com.itheima.mapper.userMapper 

@Mapper //在运行时,会自动生成该接口的实现类对象(代理对象),并且将该对象交给ioc容器管理
public interface UserMapper {

    //查询全部用户信息
    @Select("select id, name, age, gender, phone from user")
    public List list();

}

test.java.com.itheima.Demo1ApplicationTests

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testListUser(){
        List userList = userMapper.list();
        userList.stream().forEach(user -> {
            System.out.println(user);
        });
    }

数据库连接池

  • 容器、负责分配、管理数据库连接
  • 没有连接池,连上之后不用了就关闭连接

  • 有连接池,会创建数据库连接池,重复是用一个现有的数据库连接,用完归还
  • 释放空闲时间超过阈值的连接

标准接口:DataSource

springboot主要是用hikariDataSource

Druid用的也很多,阿里巴巴开源数据库连接池项目

切换Druid数据库连接池:


    com.alibaba
    druid-spring-boot-starter
    1.2.8

lombok

使用背景:虽然只有五个参数,但是要写的pojo.User有70行代码

  • lombok是java类库,可以自动生成构造器、getset、equals、hashcode、tostring、并且生成日志变量
* @see Getter
* @see Setter
* @see ToString
* @see EqualsAndHashCode

你可能感兴趣的:(mybatis)