栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

1 Mybatis-day01

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1 Mybatis-day01

SSM:Spring SpringMVC Mybatis

SSH: Spring struts2 hibernate

1 Mybatis 1.1 原始的jdbc操作
  • 加载驱动
  • 获取链接
  • 编写sql语句
  • 创建执行器 statement
  • 执行CRUD
  • 释放资源

原始jdbc存在的问题:

  1. 数据库连接创建 释放频繁造成系统资源的浪费从而影响系统性能
  2. sql语句在代码中是硬编码 造成代码不易维护 实际应用sql变化的可能性比较大 sql变动需要改变Java代码
  3. 查询操作时,需要手动将接过机中的数据封装到实体中。插入数据的时候,需要手动的将实体的数据设置到sql语句的占位符的位置。

解决方案:

  1. 使用数据库连接池初始化连接资源
  2. sql语句抽取到xml配置文件中
  3. 使用反射技术,自动将实体与表进行属性和字段的自动映射
2 什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

采用的思想ORM 。对jdbc进行封装,屏蔽了jdbc api底层的访问细节,不需要与jdbc api打交道 就可以完成数据的持久化操作

2.1 mybatis 快速入门

1 引入依赖

    
        org.mybatis
        mybatis
        3.5.7
    
    
    
        mysql
        mysql-connector-java
        5.1.48
    
    
    
        junit
        junit
        4.13.2
        test
    

2 创建数据库表

3 编写User的实体

public class User {
    private int id;
    private String username;
    private String password;

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public User(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + ''' +
                ", password='" + password + ''' +
                '}';
    }
}

4 配置mybatis




    
        
            
            
                
                
                
                
            
        
    
    
        
    

5 创建Dao接口 UserDao

public interface UserDao {
    List findAll();
}

6创建映射文件UserDao.xml




    
        select * from User
    

2.2 小结
  1. 添加mybatis的依赖(数据库的连接驱动)
  2. 创建了数据库表
  3. 创建了实体
  4. 创建mybatis的主配置文件:连接数据库的属性
    1. 配置文件的名称可以随意,位置必须位于resources目录下
    2. 连接属性必须配置正确
  5. 编写dao接口
  6. 编写dao接口的映射文件:sql语句
    1. 映射文件的位置必须位于resources目录下 并且他的层级关系要和dao接口保持一致(在resources目录下创建层级结构的时候,创建的是directory 而且要一个一个创建,不能像创建包一样使用点分割一次写完)
    2. 映射文件的名称必须和dao接口的名称保持一致 扩展名为.xml
    3. namespace是dao接口的全类名
    4. sql语句的id是dao接口的方法名
  7. 测试

注意事项:在mybatis中 dao层的命名。一般命名为XXXMapper

2.3 使用mybatis完成增删改操作
public interface UserMapper {
    List findAll();
    void add(User user);
    void update(User user);
    void delete(int id);
}

映射文件


    select * from users where 1=1
    
       and username=#{username}
    

where 主要解决在条件拼接时,如果条件不成立,需要单独设置过滤条件1=1 的问题


        select * from users
    
        

            
                username=#{param1}
            
            
                password=#{param2}
            
            
                1=1
            
        

    

    

foreach

    
         where id in
        
            #{id}
        

    
8 分页查询

PageHelper 第三方的插件 实现分页功能。

引入依赖


    com.github.pagehelper
    pagehelper
    5.3.0

在mybatis的核心配置文件中配置分页插件

    

        
            
        
    

测试分页

@Test
public void pageHelperTest() throws IOException {
    //设置分页参数 第一个表示第几页 第二个参数表示每页显示的条数
    PageHelper.startPage(2,5);
    List users = mapper.findAll();
    System.out.println(users);
    System.out.println("-------------分页相关参数--------");
    PageInfo info = new PageInfo<>(users);
    System.out.println("总记录数:" + info.getTotal());
    System.out.println("总页数:" + info.getPages());
    System.out.println("当前页:"+ info.getPageNum());
    System.out.println("每页显示的记录数:"+info.getPageSize());
    System.out.println("是否是第一页:" + info.isIsFirstPage());
    System.out.println("是否是最后一页:" + info.isIsLastPage());
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390266.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号