• MyBatis(二)


    API:

      Resources:将核心配置文件加载到流中;

      SqlsessionFactoryBuilsder:用于构造SqlsessionFactory

      SqlSessionFactory:构建SqlSeeion对象

    接口代理方法实现对Dao层的开发

      1.映射文件和dao层下的接口名一致   编译后在同一个文件夹中

      2.映射文件的namespace的名字与接口全限定名一致   

      3.接口定义的方法名参数类型返回值类型与xml中定义的一致     

    Mapper mapper = SqlSeesion.getMapper();
    mapper.select()

    ResultMap:可以解决数据库的属性和实体类对应不上的问题。

     子标签中id时表中的主键id  其他列都是用result    column----property

    Mybatis中多参数传递:

      1.索引    where uid = #{0}----0占位符  低版本多参数uid=#{arg0} and uname=#{arg1}

      2.map集合:uid=#{key1} and uname=#{key2}  key1.key2对应map中键

      3.注解:( @param(value=" 11 ") String uname)  uname=#{11}   sql语句{}中的值必 须与注解中的value值一样

      4.属性名  传入对象    uid=#{属性名} and uname=#{属性名}

          //顺序传值
               select * from user where uid = #{0} and uname =#{1}
            //通过注解 注解设置的value值与sql相对应
              select(@parm(value ="uid") int uid ,@parm(value ="uname") String uname )
            select * from user where uid =#{uid} and uname=#{uname}
            //通过map集合  
                Map map = new HashMap();
            map.put("key1",1)
            map.put("key2","李四")
            select * from user where uid={key1} and uname={key2} 
            //通过对象
               User user =new User();
            User.setId(1)
            User,setName("李四")
            select * from user where uid={uid} and uname={uname} 

     模糊查询:

     占位符: 1.    select * from user where uname like #{uname}

        测试selectByLike("%"+"王"+"%")

      2.  select * from user where uname like '%${value}%'(适用范围mysql  sqlserver)

        测试selectByLike("王")        不使用value接口顶顶方法时需要使用注解方式传值

      3.  select * from user where uname like concat(’%‘,#{uname},’%‘)

    字符串拼接:4."%"#{uname}"%" 会有sql注入问题 

    ${}和#{}的区别:

    #{}表示的是占位符, 相对安全  里面的名字随意

      可以实现preparedStatement向占位符赋值  自动进行java类型转换和jdbc类型转换  可以防止sql注入

      可以接收简单类型或pojo类型 如果paramenterType传递单个简单类型{}里可以实value或者其他名称

    ${}表示的是拼接sql串, 变量名不能随意给   否则必须给注解

    Mybatis中主键的使用:

      

     sql片段:

      对公共的sql代码进行抽取

    分页: 

      使用插件进行分页开发

    引入jar包:

    <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.3</version>
    </dependency>

    核心xml文件引入插件:

    <plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

    编写代码:

      //设置当前页和页量

    PageHelper.startPage(3,3);

      //实例化PageInfo对象传入数据库中的所有的数据集合

    List<User>  users = userMapper.selectAll();
    PageInfo<User> pageInfo =new PageInfo<>(users);

      //通过get方法可以获取分页相关的属性值

    System.out.println(pageInfo.getPageNum());
            System.out.println(pageInfo.getPages());
            System.out.println(pageInfo.getSize());
            System.out.println(pageInfo.getTotal());
            System.out.println(pageInfo.isIsFirstPage());
            System.out.println(pageInfo.isIsLastPage());
            System.out.println(pageInfo.getList());

    表与表之间的关系一对一:一对多:

    多对多:


    嵌套查询:
      把一对一 或者一对多的查询语句 分成两个语句来分别查询
      1.一对一:

    <trim>标签
      <trim prefix="前缀" suffixOverrides="去除后缀">
    </trim>

    <foreach ></foreach>遍历
    1.遍历集合
    collection:遍历的对象 list array
    open:开始
    item:每次遍历的数据
    close:以..结束
    separtor:以..分割
    close:以..结束



    使用注解进行开发:
      








     



















  • 相关阅读:
    Ida动态修改android程序的内存数据和寄存器数值,绕过so文件的判断语句
    Ida双开定位android so文件
    IDA调试android so文件.init_array和JNI_OnLoad
    超EASY 五步实现Eclipse ASN.1 SDK和插件安装
    记录重装系统的艰苦奋斗历程
    音标
    有道建昆老师~Reading Comprehensive
    Linux之普通用户用sudo建立文件和root用户建立的区别
    名句
    20200307(13)
  • 原文地址:https://www.cnblogs.com/frhl/p/13564252.html
Copyright © 2020-2023  润新知