MyBatis

一,MyBatis是什么?

MyBatis 是一个orm框架(Object relation Mapping),持久层技术,支持动态sql调用,存储过程调用(数据库编程 for if in out),sql和java代码显示分离。(高内聚 低耦合)提高程序的扩展性和维护性,由 ibatis 改进而来。

二,MyBatis的执行流程是怎样的?

如图所示:
在这里插入图片描述
代码展示:

 //加载全局置文件
        String fileName = "mybatis-config.xml";
        //Resources是mybatis中提供的一个工具类
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(fileName);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //创建工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂拿到一个会话
        SqlSession sqlSession = factory.openSession();
        //通过反射拿到接口
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        //染头通过接口拿到方法并使用:以修改为例子
         Student student = new Student(2, "张学潇2号", 35, "东莞", "10000", "fafa",1);
        int i = mapper.updateStudentById(student);
        if (i>0){
            System.out.println("修改成功");
        }else {
            System.out.println("修改失败");
        }
        sqlSession.commit();
        sqlSession.close();

注意:增删改需要提交事务

三,MyBatis中接口方法多个参数解决方案?

1,单个参数

① 对象的话直接 #{对象的属性} 取值。
② 一个参数的话直接 #{参数名字} 取值。

2,多个参数

1: @Param (“名称”) 就是在我们sql语句中使用的变量名(推荐)
#{名称}

(@Param("id") int id, @Param("name") String name,@Param("bir") Date bir, @Param("address")

然后可以直接使用#{Param中设置的值}来取值: 例如name = #{name};

2: 使用map集合的传参 #{key}

int saveByMap(Map<String,Object> map);

然后可以根据键取值的方式获取
例如 键=“name” 值 = “张三” #{name}= “张三”

3: 使用参数的下标#{arg0}。。。。。

直接格局元素下标开始获取
例如:#{param1},#{param2},#{param3},#{param4}
#{arg0},#{arg1},#{arg2},#{arg3}

param 下标从1开始,arg 下标从0开始

四,MyBatis中获取主键值,以及创建别名

一,主键值的获取

例子:

<insert id="save" parameterType="com.ujiuye.mybatis.pojo.Person">
    <selectKey keyProperty="id" keyColumn="id" order="AFTER" resultType="int">
        select LAST_INSERT_ID();
    </selectKey>
    INSERT INTO `person`(`id`, `name`, `bir`, `address`)
    VALUES (#{id},#{name},#{bir},#{address});
</insert>

在< insert > 块中加入 < selectkey >,
属性值意思分别是

返回保存了当前对象的主键值
keyProperty: 类中的主键字段匹配的属性
keyColumn: 表中的那个字段是主键字段
order: BEFORE(先获取主键然后再插入数据) AFTER(先插入数据,在获取主键)
resultType: 主键的类型是什么

获取方式:

//获取方式
			System.out.println("插入后 id:"+person.getId());

一,别名的创建

在配置文件的头部插入
< typeAliases>
< typeAliase type=”类的描述” aliase=”定义名字” ></ typeAliase>
</ typeAliases>

或者:
< typeAlias type=“com.ujiuye.bean.Person” alias=“Person”/>
< package name=“beike.mybatis.pojo”/>
< /typeAliases>

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值