发表于: 2017-09-19 20:18:17

1 727


今天完成的事情:

1、大致了解了mybatic的环境配置

2、大致能够用Mybatis连接数据库

明天计划的事情:

1、看一些视频或网上搜索代码的生成

2、根据进度进行下一个任务

收获:

1、学习了mybatics,并了解了mybatics的功能

mybatics:支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

2、了解并尝试自己给mybatics环境做配置

<1>、创建java工程

<2>、下载所需要的jar包,mybatics环境变量的配置所下载的jar包分别为mybatis-3.4.2.jar和mysql-connector-java-5.1.30-bin.jar,并将这两个jar包添加进去

<3>、创建 mysql测试数据库和用户表(根据网上经验,数据库都是根据他们的数据库建立的。)

mysql> use mybatis;
Database changed
mysql> select * from users;
+----+----------+------+
| id | NAME     | age  |
+----+----------+------+
|  1 | 孤傲苍狼 |   27 |
|  2 | 白虎神皇 |   27 |
+----+----------+------+

<4>、使用MyBatis查询表中的数据:1、在src目录下创建一个conf.xml文件,2、定义表所对应的实体类、3、定义操作users表的sql映射文件userMapper.xml,4、在conf.xml文件中注册userMapper.xml文件,然后创建一个Test1类,最后执行

定义表中的实体类,User.java

package me.gacl.domain;
public class User {
    //实体类的属性和表的字段名称一一对应
    private int id;
    private String name;
    private int age;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
}

测试代码Test1类

package me.gacl.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import me.gacl.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Test1 {

    public static void main(String[] args) throws IOException {
        //mybatis的配置文件
        String resource = "conf.xml";
        //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
        InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
        //构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
        //Reader reader = Resources.getResourceAsReader(resource);
        //构建sqlSession的工厂
        //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        //创建能执行映射文件中sql的sqlSession
        SqlSession session = sessionFactory.openSession();
        /**
         * 映射sql的标识字符串,
         * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
         * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
         */
        String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的标识字符串
        //执行查询返回一个唯一user对象的sql
        User user = session.selectOne(statement, 1);
        System.out.println(user);
    }
}

最后执行的结果:

3、Mybatis和JDBC的区别:JDBC是Java提供的一个操作数据库的API,Mybatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO映射成数据库中的记录。Mybatis同时也是对JDBC的封装。相对于JDBC,Mybatis有以下优点:优化获取和释放,sql统一管理,对数据库进行存取操作,生成动态的sql语句,能够对结果集进行映射。

遇到的问题:

有时候按照网上给的例子做了好几遍都不能运行通,最后果断给放弃了,以我的能力实在是解决不了这种问题,所以又进行其他例子的尝试,果不出其然,上面的例子就很容易操作,一个人一个做法,也可能是讲的详细程度不够,不能很好的运行,下面的问题是之前的第一个例子,按照他说的做,老是报错,做第二个的时候就注意了,实体类和测试的类一定要放各自的包里系统才能识别,不过上面的例子确实比下面这个好操作点,每一步都很清晰。


ps:实践是检验真理的唯一标准。多看多练多学习,不多说,就完了!


返回列表 返回列表
评论

    分享到