mybatis笔记

什么是框架?
JDBC:
Connection,preparedStatement,ResultSet
Sping的JDBC Template:
Spring中对JDBC的简单封装
Apache的DBUtils:
和Spring的Template相似,也是对JDBC的简单封装。
以上都不是框架,JDBC是规范,其他两个是工具类。
Mybatis 是一个持久层框架,使用java编写,它封装了很多细节,是我们专注于sql语句本身,而不用关注驱动注册,建立连接等繁杂过程。
它使用了ORM思想实现了结果集的封装。Object Relational Mapping,对象关系映射,就是把数据库表和实体类及实体类的属性对应起来,让我们可以实现操作实体类就操作数据库表.
mybatis的环境搭建
1,创建maven工程,并添加依赖
2,生成实体类和dao层接口
实体类

/**
 * @author lzr
 * @date 2020 05 15 22:25
 * @description 实体类
 */
public class User implements Serializable {
    private int id;
    private String username;
    private String sex;
    private String address;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }


    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

mapper

/**
 * @author lzr
 * @date 2020 05 15 22:28
 * @description 用户的持久层接口
 */
public interface   UserMapper {
    /**
     * 查询所有操作
     * @return
     */
    public List<User> findAll();
}

3,配置mybatis主配置文件sqlMapConfig
sqlMapConfig

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--mybatis的主配置文件-->
<configuration>
    <typeAliases>
        <package name="com.maaoooo.bean"/>
    </typeAliases>
    <!--配置环境-->
    <environments default="mysql">
        <!--配置mysql的环境-->
        <environment id="mysql">
            <!--配置事务的类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据源 也叫连接池-->
            <dataSource type="POOLED">
                <!--配置连接数据库的4个基本信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--指定映射配置文件的位置-->
    <mappers>
        <!--resource用于指定文件位置-->
        <mapper resource="com/maaoooo/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

4,配置映射配置文件Mapper.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="com.maaoooo.mapper.UserMapper">
    <!--配置查询所有 public List<User> findAll();-->
    <select id="findAll"  resultType="com.maaoooo.bean.User">
        select * from user
    </select>
</mapper>

Mybatis环境搭建的注意事项
1,mapper就是dao,在mybatis中把持久层的接口名称和映射文件也叫做:mapper,所以UserDao和UserMapper是一样的。
2,在idea创建目录时,和包是不一样的。包在创建时 Com.maaoooo.mapper是三级目录,而目录在创建时 com.maaoooo.mapper是一级目录
3,mybatis的映射配置文件位置必须和mapper接口的包结构相同。
4,映射配置文件的mapper标签namespace属性的取值必须是mapper接口的全限定名。
5,映射配置文件的操作配置(select),id属性的取值必须是mapper接口的方法名。
遵循了3,4,5,点后,我们无需再写dao的实现类。
mybatis入门测试:
1,加载配置
2,创建sqlSessionFactory工厂
3,创建SqlSession
4,创建Mapper接口的代理对象
5,执行mapper的方法
6,释放资源.

/**
 * @author lzr
 * @date 2020 05 17 09:43
 * @description
 */
public class MybatisTest {
    /**
     * 测试
     */
    public static void main(String[] args) {
        //读取配置文件
        InputStream in= null;
        try {
            in = Class.forName("MybatisTest").getClassLoader().getResourceAsStream("SqlMapConfig.xml");
        } catch (ClassNotFoundException e) {
            System.out.println("读取配置文件失败");
            e.printStackTrace();
        }
        //创建sqlSessionFactoryBuilder
        SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
        //创建sqlSessionFactory
        SqlSessionFactory ssf=ssfb.build(in);
        //生产Session
        SqlSession session=ssf.openSession();
        //操作数据库 (实际上通过代理进行方法增强)
        UserMapper userMapper=session.getMapper(UserMapper.class);
        List<User> userList=userMapper.findAll();
        //遍历集合
        for (User user : userList) {
            System.out.println(user.toString());
        }
        session.close();
    }
}

Mapper.xml的ResultType是为了告知mybatis要封装到哪个实体类中.
mybatis的注解配置:
不需要mapper.xml,在mapper接口的方法上,使用@Select(“sql语句”),并且在sqlMapperConfig里配置mapper时使用classs属性指定接口全限定名。
userMapper

/**
 * @author lzr
 * @date 2020 05 15 22:28
 * @description 用户的持久层接口 注解方式
 */
public interface  UserMapper {
    /**
     * 查询所有操作
     * @return
     */
    @Select("select * from user")
    public List<User> findAll();
}

sqlMapConfig

    <mappers>
        <!--注解-->
        <mapper class="com.maaoooo.mapper.UserMapper"/>
    </mappers>
</configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值