SSM之Mybatis(三)

35 阅读2分钟

3.3 增删改

  • 配置UserMapper

    <!--    add-->
        <insert id="saveUser" parameterType="com.study.domain.User">
            insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
        </insert>
    
  • 编写测试类

        @Test
        public void testSave() throws IOException{
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            SqlSessionFactory sq1SessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sq1Session = sq1SessionFactory.openSession();
    ​
            User user = new User();
            user.setUsername("jack");
            user.setBirthday(new Date());
            user.setAddress("renminlu");
            user.setSex("男");
    ​
            sq1Session.insert("user.saveUser", user);
    ​
            sq1Session.commit();
            sq1Session.close();
    ​
        }
    
  • 注意事项

    • -播入语句使用insert标签
    • -在映射文件中使用par ameterType属性指定要插入的数据类型
    • -Sq1语句中便用#{实体属性名}方式引用实体中的属性值
    • 插入操作使用的API是sq1 ISession.insert(“命名空间.id",实体对象);
    • -插入操作涉及数据库数据变化,所以要使用sqlsession对象显示的提交事务,即sqlsession.commit()
  • 修改

    • 配置UserMapper

          <!--    update-->
          <update id="updateUser" parameterType="com.study.domain.User">
              update user set username = #{username},birthday = #{birthday},sex = #{sex},address = #{address} where id = #{id}
          </update>
      
    • 编写测试类

          @Test
          public void testUpdate() throws IOException{
              InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
              SqlSessionFactory sq1SessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
              SqlSession sq1Session = sq1SessionFactory.openSession();
      ​
              User user = new User();
              user.setId(3);
              user.setUsername("lucy");
              user.setSex("女");
      ​
              sq1Session.update("user.updateUser", user);
      ​
              sq1Session.commit();
              sq1Session.close();
          }
      
  • 删除

    • 配置UserMapper

          <!--    update-->
          <update id="updateUser" parameterType="com.study.domain.User">
              update user set username = #{username},birthday = #{birthday},sex = #{sex},address = #{address} where id = #{id}
          </update>
      
    • 编写测试类

          @Test
          public void testUpdate() throws IOException{
              InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
              SqlSessionFactory sq1SessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
              SqlSession sq1Session = sq1SessionFactory.openSession();
      
              User user = new User();
              user.setId(3);
              user.setUsername("lucy");
              user.setSex("女");
      
              sq1Session.update("user.updateUser", user);
      
              sq1Session.commit();
              sq1Session.close();
          }
      
    • 注意事项

      • -制除语句使用delete标签
      • 一Sq1语句中使用#{任意字符串}方式引用传递的单个参数
      • -除操作使用的API是sqlSession.delete(“命名空间.id”,object);

3.4 增删改查总结


    查询
    代码:
    List<User>list sqlsession.selectList("UserMapper.findAl1");
    映射文件:
    <select id="findAl1"resultType="com.lagou.domain.User">
    select from user
    </select>
    女新增
    代码:
    sqlsession.insert("UserMapper.save",user);
    映射文件:
    <insert id="save"par ameterType="com.lagou.domain.User">
    insert into user(username,birthday,sex,address)
    values (#username},#{birthday},#{sex},#address}
    </insert>
    ÷修改
    代码:
    sqlSession.update("UserMapper.update",user);
    映射文件:
    <update id="update"parameterType="com.lagou.domain.User">
    update user set username =#username},birthday =#birthday},
    sex =#{sex},address =#address}where id =#{id}
    </update>
    ☆别除
    代码:
    sqlsession.delete("UserMapper.delete",4);
    映射文件:
    <delete id="delete"parameter Type="java.lang.Integer">
    delete from user where id #fid}
    </delete>

3.5 mappers标签

4)mappers标签

该标签的作用是加载映射的,加载方式有如下几种:

1.使用相对于类路径的资源引用,例如:

<mapper resource="org/mybatis/builder/usqrMapper.xml"/> 
    
2.使用完全限定资源定位符(URL),例如:

<mapper ur1="file:///var/mappers/userMapper.xml"/> 《下面两种mapper代理开发中使用:暂时了解》

3.使用映射器接口实现类的完全限定类名,例如:

<mapper class="org.mybatis.builder.userMapper"/>

4.将包内的映射器接口实现全部注册为映射器,例如:

<package name="org.mybatis.builder"/>

3.6 知识小结

核心配置文件常用配置:

  • properties标签:该标签可以加载外部的properties文件
<properties resource="jdbc.properties"></properties>
  • typeAliases标签】设置类型别名
<typeAlias type="com.lagou.domain,User" alias="user"></typeAlias> 
  • mappers标签:加载映射配置
<mapper resource="com/lagou/mapper/UserMapping.xml"></mapper>
  • environments标签:数据源环境配置
<environments default="development"> 
    <environment id="development">

		<transactionManager type="JDBC"/> 
    	<dataSource type="POOLED">
            <property name="driver" value="S{jdbc.driver}"/> <property name="ur1" value="S{jdbc.ur1}"/>
            <property name="username" value="S{jdbc.username}"/> <property name="password" value="S{jdbc.password}"/> 
    	</datasource>

    </environment> 
 </environments>