MyBaits

MyBaits

持久层框架:完成数据库操作的框架,替代了JDBC的作用

MyBatis是一个 ‘半自动’ 的 ‘ orm ’ 框架

Hibrnate 是全自动框架

ORM (Object Relational Mapping)对象关系映射,将java中的一个对象与数据库表中一行的记录一一对应

ORM框架提供了实体类与数据表的映射关系,通过映射文件的配置,将对象保存到数据库表中,实现对象的持久化

  • MyBatis的前身是iBatis
  • 特点:
    • 支持自定义sql 、存储过程
    • 对原有jdbc封装,消除了所有JDBC代码、让开发者关注sql本身
    • 支持xml和注解配置方式自动完成orm操作,时间结果映射

MyBaits框架使用

在这里插入图片描述

1、创建数据库

在这里插入图片描述

2、创建实体类

import lombok.Data;

@Data
public class User {
    private int id;
    private String username;
    private String pwd;
}

3、创建接口定义方法

@Repository
public interface UserMapper {

    int insertUser(@Param("u") User user);
    int insertUsers(@Param("u") List<User> list);

    int update(@Param("u") User user);

    User selectUser(int id);
    List<User> selectUsers();

    User selectForLogin(User user);
}

4、创建dao接口的映射文件

  • 在resources目录下,新建名为mapper的文件加在mapper中新建名为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="">

</mapper>

  • 在映射文件中对接口中定义的方法进行实现
<?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="com.yan.mapper.UserMapper">


    <resultMap id="User" type="com.yan.bean.User">
        <id property="id" column="id"></id>
        <result property="username" column="account"></result>
        <result property="pwd" column="pws"></result>
    </resultMap>

    <sql id="columns">
        id as id,
        account,
        pws
    </sql>
//单个插入
    <insert id="insertUser" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
        insert into tb_user(account, pwd)
            value (#{u.username}, #{u.pwd})
    </insert>
//批量插入
    <insert id="insertUsers">
        insert into
        tb_user(account,pwd)
        value
        <foreach collection="list" item="u" open="(" close=")" separator="),(">
            #{u.username},#{u.pwd}
        </foreach>
    </insert>
//修改
    <update id="update">
        update
        tb_user
        <set>
            <if test="u.username!=null">
                account = #{u.username},
            </if>
            <if test="u.pwd!=null">
                pwd = #{u.pwd},
            </if>
        </set>
        where id = #{u.id}
    </update>
//批量查找
    <select id="selectUsers" resultMap="User">
        select
        <include refid="columns"></include>
        from tb_user
    </select>

//单个查找
        <select id="selectUser" resultType="com.yan.bean.User">
            select *
            from tb_user
            where id = #{id};
        </select>
        <select id="selectForLogin" resultType="com.yan.bean.User">
            select *
            from tb_user
            where account = #{account}
              and pwd = #{pwd}
        </select>
</mapper>

5、映射文件添加到主配置文件

 <mappers>
        <mapper resource="mapper/usermapper.xml"></mapper>
    </mappers>

添加junit依赖

<!-- junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

测试类

package com.yan;

import com.yan.bean.User;
import com.yan.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Main {
    public static void main(String[] args) throws Exception {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

//        User u = new User();
//        u.setUsername("1234");
//        u.setId(2);
        UserMapper mapper = context.getBean(UserMapper.class);
        List<User> list =mapper.selectUsers();
        System.out.println(list);



//        List<User> list = new ArrayList<>();
//        for (int i = 0; i < 10; i++) {
//            User u = new User();
//            u.setUsername("vfsd"+i);
//            u.setPwd("dfsafsa"+i);
//            list.add(u);
//        }
//     mapper.insertUsers(list);
//        mapper.update(u);
//      System.out.println(u.getId());

}


//       确定配置文件位
//        String resource = "mybatis-config.xml";
//       获得配置文件中的内容
//        InputStream inputStream = Resources.getResourceAsStream(resource);
//       通过SqlSessionFactoryBuilder 来创建一个 SqlSessionFactory
//        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//        SqlSession ss = sqlSessionFactory.openSession(true);
//        UserMapper mapper = ss.getMapper(UserMapper.class);
//        User u = new User();
//        u.setAccount("yyy");
//        u.setPwd("123456");
//        mapper.insertUser(u);
//        System.out.println(mapper.selectUser(1));
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值