Java教程

学习mybatis-2

本文主要是介绍学习mybatis-2,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

学习mybatis3的第一天
1、根据这个全局的mybatis-config.xml配置文件生成一个SqlSessionFactory对象。
2、根据SqlSessionFactory对象获取sqlSession实例,整个实例可以执行已经映射的sql语句。
问:什么叫做已经映射的sql语句呢?
有一个xml文件,里面的内容如下:这个xml文件是EmployeeMapper.xml
放在conf目录下面
在这里插入图片描述

<?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.rtl.mybatis.EmployeeMapper">
    <select id="selectEmp" resultType="com.rtl.mybatis.bean.Employee">
        select * from tbl_employee where id = #{id}
    </select>
</mapper>

解释xml内容里面的参数含义。
1、namespace是命名空间
namespace=com.rtl.mybatis.EmployeeMapper
2、id是唯一标识
id=selectEmp
3、resultType是返回值类型
resultType=“com.rtl.mybatis.bean.Employee”
4、#{id} 从传递过来的参数中取出id的值

selectOne(String statement, Object parameter);
解释参数含义:
1、sql的唯一标识。
statement – Unique identifier matching the statement to use.
这里推荐第一个参数写xml文件里面的namespace+id作为第一个参数的值。
也就是statement=com.rtl.mybatis.EmployeeMapper.selectEmp
这就相当于告诉mybatis需要执行这个sql
2、
执行sql要用的参数。
parameter – A parameter object to pass to the statement.
select * from tbl_employee where id = #{id}
这条sql里面需要传入一个参数,#{id},这个参数就是由第二个参数给出
parameter=1,就说明:
select * from tbl_employee where id = 1
查询的是1号员工。

修改mybatis-config.xml里面的mapper标签
将我们写好的sql映射文件一定要注册到全局的配置文件中。

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

总的mybatis-config.xml文件:

<?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">
<configuration>
    <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/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="EmployeeMapper.xml"/>
    </mappers>
</configuration>

EmployeeMapper.xml:
这个文件被称为sql的映射文件
mybatis-config.xml:
这个文件被称为全局的配置文件

运行测试类之后,报错:
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
发现是juint的错,降低了版本,由4.12变为4.10
https://blog.csdn.net/qq_41709577/article/details/120962399

改了之后又报错:
java.io.IOException: Could not find resource mybatis-config.xml

将conf目录变为source root目录。
https://blog.csdn.net/qq_41709577/article/details/120962517
在这里插入图片描述
在这里插入图片描述
我们会发现,其中lastName的值为null,但是数据库里面的值不是Null
问题就出在我们再写java bean对象的时候,
在这里插入图片描述
他的属性名是lastName,但是数据库的属性名是last_name
在这里插入图片描述
这时候我们修改EmployeeMapper.xml sql映射文件里面的sql语句为:
之前的sql:
select * from tbl_employee where id = #{id}
在这里插入图片描述
现在的sql:
select id,last_name lastName,gender,email from tbl_employee where id = #{id}
前面是:last_name数据库的名字
后面的别名是java bean对应的属性名。
在这里插入图片描述
在这里插入图片描述
这样的lastName才会出现数据值。

总结:步骤
1、写好mybatis-config.xml的全局配置信息,包含运行的环境信息
2、写好sql的映射文件EmployeeMapper.xml,里面配置了sql和sel的封装规则。
3、将sql映射文件注册在全局配置文件中
4、写测试类代码。
在这里插入图片描述
其中
SqlSession openSession = sqlSessionFactory.openSession();
这个SqlSession openSession ,一个这个代表和数据库的一次会话,用完记得关闭。

项目架构:
在这里插入图片描述

全部代码:
1、测试类:

package com.rtl.mybatis.test;

import com.rtl.mybatis.bean.Employee;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

public class MybatisTest {
    //2、
    @Test
    public void test() throws IOException {
        //(16,17,18行)1、根据这个全局的mybatis-config.xml配置文件生成一个SqlSessionFactory对象。
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2、根据SqlSessionFactory对象获取sqlSession实例,整个实例可以执行已经映射的sql语句。
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            //3、
            Employee employee = openSession.selectOne("com.rtl.mybatis.EmployeeMapper.selectEmp", 1);
            System.out.println(employee);
        }finally {
            openSession.close();
        }
    }
}

2、java bean类:

package com.rtl.mybatis.bean;

public class Employee {
    private Integer id;
    //注意:数据库的字段名字是last_name
    private String lastName;
    private String email;
    private String gender;

    public Integer getId() {
        return id;
    }

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

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", lastName='" + lastName + '\'' +
                ", email='" + email + '\'' +
                ", gender='" + gender + '\'' +
                '}';
    }
}

3、EmployeeMapper.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.rtl.mybatis.EmployeeMapper">
    <select id="selectEmp" resultType="com.rtl.mybatis.bean.Employee">
        select id,last_name lastName,gender,email from tbl_employee where id = #{id}
    </select>
</mapper>

4、mybatis-config.xml

<?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">
<configuration>
    <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/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="EmployeeMapper.xml"/>
    </mappers>
</configuration>

改进版本:
为什么需要改进呢?

这篇关于学习mybatis-2的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!