首页 > 数据库 >Mybatis之数据库连接+PageHelper分页插件+Mybatis-Plus插件

Mybatis之数据库连接+PageHelper分页插件+Mybatis-Plus插件

时间:2023-04-03 09:12:40浏览次数:56  
标签:插件 String id private PageHelper sqlSession Mybatis public

MyBatis Plus 教程(人人便成为)

https://www.cnblogs.com/chch213/p/16320820.html

前言

ORM框架:对象关系映射  object relational mapping  半自动ORM映射工具(自己编写sql语句)    Hibernater属于全自动 映射规则:数据库表 > 类 | 表字段 > 类的属性 | 表数据 > 对象   JDBC操作数据库 复制代码
public class JDBCTest {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            // 1、数据库连接参数
            String url = "jdbc:mysql://localhost:3306/user?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8";
            String username = "123";
            String password = "123";
            // 2、获加载数据库连接驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 3、创建数据库连接对象
            connection = DriverManager.getConnection(url, username, password);
            // 4、预处理sql语句
            preparedStatement = connection.prepareStatement("select * from user");
            // 5、执行sql语句
            resultSet = preparedStatement.executeQuery();
            // 6、解析结果集
            while (resultSet.next()) {
                User user = new User();
                user.setUserName(resultSet.getString("username"));
                System.out.println(user.toString());
            }
            // 7、关闭资源
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                resultSet.close();
                preparedStatement.close();
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
复制代码

 

Mybatis操作数据库

官网

mybatis – MyBatis 3 | 简介

复制代码
// 加载核心配置文件
String resource = "org/mybatis/builder/mybatis-config.xml"; 
InputStream inputStream = Resources.getResourceAsStream(resource); 
// 获取sqlsession工厂对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); 
SqlSessionFactory factory = builder.build(inputStream);
// 通过工厂对象获取sqlsession对象
sqlSession = factory.openSession(true);
// 获取接口的实现类代理对象
Mapper mapper = sqlSession.getMapper(T.class);
// 通过实现类对象调用方法
User user = mapper.queryUser(id);
复制代码

 

Mybatis接口的动态代理实现DAO

Mapper 接口开发需要遵循以下规范:

1) Mapper.xml文件中的namespace与mapper接口的全限定名(包名.类名)相同

2) Mapper接口方法名和Mapper.xml中定义的每个statement的id(唯一标识)相同

3) Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同

4) Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

 怎么实现动态代理的?   复制代码
    public static void mapperTest() {
        InputStream is = null;
        SqlSession sqlSession = null;
        try {
            // 加载核心配置文件
            is = Resources.getResourceAsStream("mybatis-config.xml");
            // 获取sqlSession工厂对象
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            // 获取sqlSession对象
            sqlSession = sqlSessionFactory.openSession();
            // 获取代理对象
            IUserServiceDao mapper = sqlSession.getMapper(IUserServiceDao.class);
            // 调用方法
            List<String> list = new ArrayList<>(1);
            list.add("12");
            List<UserVO> userVOList = mapper.queryUserList(list);
            System.out.println(userVOList.toString());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                sqlSession.close();
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
复制代码 getMapper() 方法最终获取到 org.apache.ibatis.binding.MapperProxy 代理对象  
-  <sql>:抽取 SQL 语句标签。 
-  <include>:引入 SQL 片段标签。 
   <sql id=“片段唯一标识”>抽取的 SQL 语句</sql> <include refid=“片段唯一标识”/>

 

PageHelper分页插件   如何使用分页插件 (pagehelper.github.io)    
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <property name="helperDialect" value="mysql"/>
            <property name="reasonable" value="true"/>
        </plugin>
    </plugins>

PageHelper.startPage(1, 2); // 开启分页

  PageHelper源码解析:
public class PageHelper extends PageMethod implements Dialect, Chain {
    private PageParams pageParams;  // 分页参数
    private PageAutoDialect autoDialect; // 数据源
    private PageBoundSqlInterceptors pageBoundSqlInterceptors; // sql处理

 

  Mybatis常用注解 @Insert:实现新增 @Update:实现更新 @Delete:实现删除 @Select:实现查询 @Result:实现结果集封装 @Results:可以与@Result 一起使用,封装多个结果集 @One:实现一对一结果集封装 @Many:实现一对多结果集封装     复制代码
public interface IUserServiceDao {
    //查询全部
    @Select("SELECT * FROM user")
    @Results({
            @Result(column = "id",property = "id"),
            @Result(column = "name",property = "name"),
            @Result(
                    property = "phone",  // 被包含对象的变量名
                    javaType = List.class,  // 被包含对象的实际数据类型
                    column = "id",          // 根据查询出的user表的id字段来查询phone表
                    /*
                        many、@Many 一对多查询的固定写法
                        select属性:指定调用哪个接口中的哪个查询方法
                     */
                    many = @Many(select = "com.exmple.demo.IPhoneDao.selectByCid")
            )
    })
    public abstract List<Classes> selectAll();
}
复制代码

 

 Mybatis-Plus使用 官网 MyBatis-Plus (baomidou.com)   POM文件依赖配置:
        <!-- mybatis-plus 插件依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.5.0</version>
        </dependency>

 

Dao层定义接口:

public interface IUserServicePlusDao extends BaseMapper<PhoneNumber> {
}
  实体类映射表: 复制代码
@AllArgsConstructor
@NoArgsConstructor
@Setter
@Getter
@ToString
@EqualsAndHashCode
@TableName("phone_number")
public class PhoneNumber {
    // id
    private String id;
    // 地址
    private String address;
    // 用户
    private String userId;
    // 有效标志
    private String isValid;
    // 创建时间
    private Date createDate;
}
复制代码

 

 

 

标签:插件,String,id,private,PageHelper,sqlSession,Mybatis,public
From: https://www.cnblogs.com/bxf0011/p/17282036.html

相关文章

  • mybatis plus的简单使用
    mybatisplus作用就是可以少些sql,实现对数据一系列操作的功能首先查询所有数据根据指定的时间查询根据时间范围查询,时间倒序  其中QueryWrapper叫做条件构造器sql表结构,直接放到sql工具执行就好/*SQLyogUltimatev10.00Beta1MySQL-5.7.22-log:Database-y......
  • java使用模块后,用maven打包时,需要保护的maven插件
    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><release>11</release><......
  • springboot集成mybatis-plus
    springboot项目先导入相关依赖mybatis-plus相关依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.5</version></dependency><dependency><gr......
  • mybatis OGNL表达式,xml查询中使用java的变量值
    1、参考struts2ongl访问静态变量与访问枚举Ognl表达式基本原理和使用方法2、java类packageorg.jeecg.mgt.cms.constant;publicclassEAd{publicstaticfinalIntegershow1=1;publicstaticfinalclassAA{publicstaticfinalIntegershow2......
  • Mybatis-动态SQL
    什么是动态SQL?动态SQL是MyBatis的强大特性之一。顾名思义,就是会动的SQL,即是能够灵活的根据某种条件拼接出完整的SQL语句。这种类似于MySQL中的casewhenthenelsethenend....这种语法,能够根据某种条件动态的拼接出需要的SQL。至于Mybatis如何实现动态SQL呢,Mybatis提供了......
  • 使用 MybatisPlusCore 自带的雪花算法生成不重复数字
    这里不介绍雪花算法的实现原理,可以自行搜索查阅网上的资料。这里主要介绍雪花算法的使用场景,如何调用第三方类库MybatisPlusCore自带的方法来使用雪花算法。雪花算法的主要使用场景,就是生成不重复的数字,作为数据库表的主键使用。你可能会使用uuid作为主键,但是其占用16个......
  • SpringBoot中Mybatis的应用
    创建一个SpringBoot项目,然后如下操作:(1)添加Lombok插件--简化实体类 (2)添加Mybatis框架和MySQL驱动---访问Mysql和使用Mybatis (3)创建pojo包和实体类在项目中创建pojo包,并在其中创建实体类。实体类上可以使用Lombok注解。首次使用时,需要在Ieda中安装该插件。L......
  • Mybatis根据对象进行数据库记录修改
    一、根据主键更新(传对象)/**根据主键更新**/intupdateById(SysUsersysUser);2、xml如下:<updateid="updateById">updatesys_usersetuser_name=#{userName},user_password=#{userPassword},user_......
  • MyBatis详细使用步骤
    MyBatis详细使用步骤1、创建数据库和表,在表里添加建库建表省略2、创建模块,导入依赖官网下载mybatis。jar导入依赖<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>x.x.x</version></dependency>3、编写Myba......
  • 安装grafana并且安装插件
      安装:到清华源去下载Indexof/grafana/yum/rpm/Packages/|清华大学开源软件镜像站|TsinghuaOpenSourceMirror  安装:yumlocalinstall grafana-6.3.0-1.x86_64.rpm-yComplete![root@zabbix-server~]#grafana-grafana-cligrafana-server[root@zabbix......