发表于: 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
private int id;
private String name;
private int age;
return id;
}
this.id = id;
}
return name;
}
this.name = name;
}
return age;
}
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
测试代码Test1类,
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 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:实践是检验真理的唯一标准。多看多练多学习,不多说,干就完了!
评论