【Mybatis】Mybatis入門

1-1 什么是MyBatis

a.MyBatis是对JDBC的封装
b.将SQL语句放在映射文件中(XML)
c.自动将输入参数映射到SQL语句的动态参数中
d.自动将SQL语句执行的结果映射成Java对象

1-2 MyBatis的应用

(0)准备工作,创建学生表,添加数据
    
    CREATE TABLE tbl_student(id VARCHAR(32),NAME VARCHAR(32),age INT);

    INSERT INTO tbl_student VALUE("A0001","wyf",23);
    INSERT INTO tbl_student VALUE("A0002","lh",24);
    INSERT INTO tbl_student VALUE("A0003","hzt",25);
    INSERT INTO tbl_student VALUE("A0004","zyx",26);
    INSERT INTO tbl_student VALUE("A0005","lif",27);
    
(1)创建项目,搭建包结构
    
(2)导入jar包
    a.导入MyBatis相关的jar包
    b.导入MySQL的驱动包
    c.导入log4j相关的jar包
    
(3)在src的根目录下创建MyBatis主配置文件mybatis-config.xml,搭建配置文件结构

(4)创建mapper包结构,创建SQL映射文件XxxMapper.xml

(5)在src根目录下引入log4j文件

(6)搭建测试环境,测试根据ID查询数据库中所有记录

1-3 MyBatis的简单入门

public static void main(String[] args) {

    String resource = "mybatis-config.xml";
    //输出流
    InputStream inputStream = null;
    try {
        //通过加载MyBatis的主配置文件mybatis-config.xml,创建输入流对象
        inputStream = Resources.getResourceAsStream(resource);
    } catch (IOException e) {
        e.printStackTrace();
    }
    /*
        SqlSessionFactoryBuilder:SqlSessionFactory的建造者
            通过调用建造者对象建造方法,为我们创建一个SqlSession对象
     */
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    // 我们未来所有的操作,使用的都是SqlSession对象来完成
    // 列如增删改查,处理事务等等,都是使用session对象来完成
    SqlSession session = sqlSessionFactory.openSession();

    /*
        需求:根据ID查单条

            如果取得的是单条记录,我们调用selectOne方法
            参数1:根据命名空间.sqlId的形式找到我们需要使用的sql语句
            参数2:我们要为sql语句中传递的参数
     */
    Student student = session.selectOne("test1.getById", "A0001");

    System.out.println("student = " + student);

    session.close();
}

2-1 在Mapper.xml文件中写sql语句需要注意的事项

namespace:命名空间
          不同的mapper映射文件使用namespace来区分
          不同的mapper映射文件使用的namespace的命名不允许出现重复
使用命名空间,sqlId的形式来找到我们想要执行的sql语句


    sql语句必须要写在相应的标签中

    <insert>在标签中写insert开头的sql语句 处理添加操作
    <update>在标签中写update开头的sql语句 处理修改操作
    <delete>在标签中写delete开头的sql语句 处理删除操作
    <select>在标签中写select开头的sql语句 处理查询操作

    parameterType:为sql语句传递的参数的类型
    resultType:如果返回值是多条记录,那么resultType的返回值类型,应该写为集合的泛型

    注意:
        在未来开发中
            a.所有的标签都必须要写ID属性
            b.<select>标签parameterType属性可以省略
                        resultType必须写
            c.对于<insert><update><delete>这3个标签,通常我们只写ID属性,其他的一概不写

2-2 MyBatis解决JDBC存在的问题

(1)获取连接,得到statement、处理rs、关闭资源非常繁琐。
    解决:使用SqlSession搞定一切。
(2)将sql语句写死在java代码中,如果修改sql语句,需要修改java代码,需要重新编译。程序的维护性不高。
    解决:将sql语句写在Mapper.xml文件中与java代码分离。
(3)向PrepareStatement对占位符的位置设置参数时,非常繁琐。
    解决:MyBatis自动将java队形映射至sql语句中,通过statement中的parameterType定义输入参数的类型。
(4)解析结果集时需要把字段的值设置到相应的实体类属性名中。
    解决:MyBatis自动将sql执行结果映射到java对象,通过statement中的resultType定义输出结果的类型。

2-3 MyBatis的主配置文件

(1)直接引入mybatis-config.xml文件,并且加载数据库驱动的方式为
        <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/db1"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
        </environment>
    
(2)直接引入mybatis-config.xml文件,但是加载数据驱动的方式为引入properties文件的形式
   
    db.propertise文件放到src根目录下,配置文件里的内容大概为
        jdbc.driver=com.mysql.jdbc.Driver
        jdbc.url=jdbc:mysql://localhost:3306/db1
        jdbc.username=root
        jdbc.password=root
        
    mybatis-config.xml配置文件里的内容变为
        <properties resource="db.properties"/>

        <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
        </environments>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值