Mybatids学习篇二

                           使用MyBatis对表执行CRUD操作


1、添加Mybatis的配置文件conf.xml


2、定义表所对应的实体类,


3、定义操作users表的sql映射文件userMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
            例如namespace="com.users.mapping.userMapper"就是com.users.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
  -->
<mapper namespace="com.users.mapping.userMapper">
     <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
                          使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
          resultType="com.User"就表示将查询结果封装成一个User类的对象返回
          User类就是users表所对应的实体类
     -->
     <!-- 
              根据id查询得到一个user对象
      -->
     <select id="getUser" parameterType="int" 
         resultType="com.users.Users">
         select * from users where id=#{id}
     </select>
     
     <!-- 创建用户(Create) -->
     <insert id="addUser" parameterType="com.users.Users">
         insert into users(name,age) values(#{name},#{age})
     </insert>
     
     <!-- 删除用户(Remove) -->
     <delete id="deleteUser" parameterType="int">
        delete from users where id=#{id}
     </delete>
     
     <!-- 修改用户(Update) -->
     <update id="updateUser" parameterType="com.users.Users">
         update users set name=#{name},age=#{age} where id=#{id}
     </update>
     
     <!-- 查询全部用户-->
     <select id="getAllUsers" resultType="com.users.Users">
         select * from users
     </select>
     
</mapper>

4、定义sql映射的接口

  UserMapperI接口的代码如下:

package com.users.mapping;


import java.util.List;


import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;


import com.users.Users;


public interface UserMapperI {
/**
 * @author w_little
 * 定义sql映射的接口,使用注解指明方法要执行的SQL
 */
 
  //使用@Insert注解指明add方法要执行的SQL
    @Insert("insert into users(name, age) values(#{name}, #{age})")
    public int add(Users user);
    
    //使用@Delete注解指明deleteById方法要执行的SQL
    @Delete("delete from users where id=#{id}")
    public int deleteById(int id);
    
    //使用@Update注解指明update方法要执行的SQL
    @Update("update users set name=#{name},age=#{age} where id=#{id}")
    public int update(Users user);
    
    //使用@Select注解指明getById方法要执行的SQL
    @Select("select * from users where id=#{id}")
    public Users getById(int id);
    
    //使用@Select注解指明getAll方法要执行的SQL
    @Select("select * from users")
         public List<Users> getAll();
}

5、conf.xml文件中注册这个映射接口

<mappers>

      <mapper resource="com/users/mapping/userMapper.xml"/>

 <!-- 注册UserMapper映射接口-->
  <mapper class="com.users.mapping.UserMapperI"/>
</mappers>

6、用到的MyBatisUtil工具类代码如下

package com.util;



import java.io.InputStream;


import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;




public class MybatisUtil {
/**
     * 获取SqlSessionFactory
     * @return SqlSessionFactory
     */
   public static SqlSessionFactory getSqlSessionFactory() {
    //mybatis的配置文件
        String resource = "conf.xml";
        //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
             InputStream is = MybatisUtil.class.getClassLoader().getResourceAsStream(resource);
             //构建sqlSession的工厂
             SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            
        return factory;
    }
    
    /**
           * 获取SqlSession
           * @return SqlSession
      */
      public static SqlSession getSqlSession() {
       //创建能执行映射文件中sql的sqlSession
       return getSqlSessionFactory().openSession();
    }
     
    /**
     * 获取SqlSession
     * @param isAutoCommit 
     *    true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务
   * false 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务
     * @return SqlSession
     */
    public static SqlSession getSqlSession(boolean isAutoCommit) {
       return getSqlSessionFactory().openSession(isAutoCommit);
    }
}

7、单元测试类的代码如下:

package com.user.test;


import java.util.List;


import org.apache.ibatis.session.SqlSession;
import org.junit.Test;


import com.users.Users;
import com.users.mapping.UserMapperI;
import com.util.MybatisUtil;


public class Test1 {


@Test
public void testAdd() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
/**
* 得到UserMapperI接口的实现类对象, UserMapperI接口的实现类对象由
* sqlSession.getMapper(UserMapperI.class)动态构建出来
*/
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
Users user = new Users();
user.setName("用户zxw");
user.setAge(20);
int add = mapper.add(user);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(add);

}


@Test
public void testUpdate() {
SqlSession sqlSession = MybatisUtil.getSqlSession(true);
/**
* 得到UserMapperI接口的实现类对象
* mUserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
*/
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
Users user = new Users();
user.setId(1);
user.setName("用户lxw");
user.setAge(56);
// 执行修改操作
int retResult = mapper.update(user);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(retResult);




}


@Test
public void testDelete() {
SqlSession sqlSession = MybatisUtil.getSqlSession(true);
/**
* 得到UserMapperI接口的实现类对象
* mUserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
*/
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
// 执行删除操作
int retResult = mapper.deleteById(7);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(retResult);

}


@Test
public void testGetUser() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
// 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
// 执行查询操作,将查询结果自动封装成User返回
Users user = mapper.getById(8);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(user);

}


@Test
public void testGetAll() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
// 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
// 执行查询操作,将查询结果自动封装成List<User>返回
List<Users> lstUsers = mapper.getAll();
// 使用SqlSession执行完SQL之后需要关闭SqlSession
   sqlSession.close();
System.out.println(lstUsers);

}
}

内容概要:文章基于4A架构(业务架构、应用架构、数据架构、技术架构),对SAP的成本中心和利润中心进行了详细对比分析。业务架构上,成本中心是成本控制的责任单元,负责成本归集与控制,而利润中心是利润创造的独立实体,负责收入、成本和利润的核算。应用架构方面,两者都依托于SAP的CO模块,但功能有所区分,如成本中心侧重于成本要素归集和预算管理,利润中心则关注内部交易核算和获利能力分析。数据架构中,成本中心与利润中心存在多对一的关系,交易数据通过成本归集、分摊和利润计算流程联动。技术架构依赖SAP S/4HANA的内存计算和ABAP技术,支持实时核算与跨系统集成。总结来看,成本中心和利润中心在4A架构下相互关联,共同为企业提供精细化管理和决策支持。 适合人群:从事企业财务管理、成本控制或利润核算的专业人员,以及对SAP系统有一定了解的企业信息化管理人员。 使用场景及目标:①帮助企业理解成本中心和利润中心在4A架构下的运作机制;②指导企业在实施SAP系统时合理配置成本中心和利润中心,优化业务流程;③提升企业对成本和利润的精细化管理水平,支持业务决策。 其他说明:文章不仅阐述了理论概念,还提供了具体的应用场景和技术实现方式,有助于读者全面理解并应用于实际工作中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值