Mybatis-基本学习(下)

时间:2021-09-16 01:40:56   收藏:0   阅读:56

四,MAP的使用--超常用

思考:多表连接查询怎么做?---MAP的好处!---返回 List<Object>

使用场景
类似加了一层封装

规范? -满足pojo的类型,SQL值的需求- Map需要<XX,Object>,因为Object通配所有,毕竟有int float String……

使用的依据:

考虑,能否使用ArrayList---答:能 比较麻烦,没有map直接--未考虑好

注意:因为map只是送值的,所以只有put操作。。

操作

    // map的使用---万能的Map
    int addUser1(Map<String,Object> map);
    
    User  getUserById1(Map<String,Object> map);  // map 用法
    
    
    <!--map的使用-->
    <insert id="addUser1" parameterType="map">
        insert into  mybatis.user(id,name,password) values (#{userId},#{userName},#{userPassword});
    </insert>
    
        <select id="getUserById1" parameterType="map" resultType="com.zjz.pojo.User">
        select * from mybatis.user where id = ${id}
    </select>
    @Test
    public void TestAddUser1(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

         Map<String, Object> map = new HashMap<>();
        map.put("userId",5);       // 对应#{userId}--类型限制POJO
        map.put("userName","zjz5");   // 对应#{userName}--类型限制POJO
        map.put("userPassword","321616");  // 对应#{UserPassword}--类型限制POJO
        mapper.addUser1(map);

        // 提交事务
        sqlSession.commit();

        sqlSession.close();

    }
    
    
        @Test
    public void TestGetUserById1(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        Map<String, Object> map = new HashMap<>();
        map.put("id","8");
        User userById1 = mapper.getUserById1(map);
        System.out.println(userById1);

        sqlSession.close();

    }
    

使用详情及规范

不懂的---两个例子,你自己做一个,三列即可确定一件事了

技术分享图片

问题以及双锁定条件

根据 密码 和 名字 查询用户

@Param注解

1.使用@Param

  // 根据id查询
  User getUserById(@Param("id")int id);
  
  <select id="getUserById" parameterType="int" resultType="com.zjz.pojo.User">
        select * from mybatis.user where id = ${id}
    </select>
  // 根据id查询
  User getUserById(int id);
  
  <select id="getUserById" parameterType="int" resultType="com.zjz.pojo.User">
        select * from mybatis.user where id = ${id}
    </select>

2,不使用@Param注解

小结:

五.配置解析

1.核心配置文件

configuration(配置)
  properties(属性)
  settings(设置)
  typeAliases(类型别名)
  typeHandlers(类型处理器)
  objectFactory(对象工厂)
  plugins(插件)
  environments(环境配置)
    environment(环境变量)
      transactionManager(事务管理器)
      dataSource(数据源)
  databaseIdProvider(数据库厂商标识)
  mappers(映射器)
  <!-- 注意元素节点的顺序!顺序不对会报错 -->

2.environments元素

配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,必须指定其中一个为默认运行环境(通过default指定)

默认 事务JDBC 数据源 POOLED

    <!--起别名-->
    <typeAliases>
        <package name="com.zjz.pojo"/>
    </typeAliases>
  
  
    非必须:javabean 注解 
    @Alias("xiaoming")
  

设置

映射(mapper)

  <!--每一个mapper.xml都需要在mybatis核心配置文件中注册-->

  <mappers>
      <mapper resource="com/zjz/dao/UserMapper.xml"/>
  </mappers>
  <!--每一个mapper.xml都需要在mybatis核心配置文件中注册-->
  <mappers>
      <mapper class="com.zjz.dao.UserMapper"/>
  </mappers>
  <environments default="test">    <!--使用test环境-->
      <environment id="development">
          <!-- 事务管理-->
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
              <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
              <property name="url"
                        value="jdbc:mysql://localhost:3306/mybatis? useSSL=true&useUnicode=true&characterEncoding=utf8"/>
              <property name="username" value="root"/>
              <property name="password" value="123456"/>
          </dataSource>
      </environment>


      <environment id="test">
          <!-- 事务管理-->
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
              <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
              <property name="url"
                        value="jdbc:mysql://localhost:3306/mybatis? useSSL=true&useUnicode=true&characterEncoding=utf8"/>
              <property name="username" value="root"/>
              <property name="password" value="123456"/>
          </dataSource>
      </environment>

  </environments>

生命周期和作用域

技术分享图片

技术分享图片

ResultMap

属性名,字段名不一致

技术分享图片

原文:https://www.cnblogs.com/zjz0818/p/15265573.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!