
mybatis自动封装了java对象,就不用看到jdbc代码
Statement对象是语句对象,只需要建立一个Java类型的对象,对象里的字段和数据库里的表头相等,,就会自动做映射
封装成对象。mybatis的任务就完成了
ORM是减少了jdbc代码的使用,不用写sql语句,全都是动态生成的数据,然后用语法生产sql语句,查到数据后自动封到Java对象。不灵活
hibernate是不用写sql语句
所以mybatis是自己写sql语句,对象自动封装
写mybatis层代码时,首先创建数据库,然后创建maven项目,在pom.xml导入坐标依赖
<dependencies>
<!--mybatis核心包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
需要用到的包的种类
entity也叫domain,里面是实体类
service业务处理类
util是工具类
vo是包装类
建实体类就是为了封装数据,传递数据,到时候不用传User里的数据,直接传User就行,所以实体类里要和数据库表的字段对应,继承这个接口对数据存储和传输起来更方便
例子:如这个User的实体类(有set、get方法)


dao里写接口(行业标准),接口里定义需要用的方法,接口实现类来实现这些方法(其实dao层一般不需要实现类),一般是在配置文件(UserDao.xml)中实现这些方法
配置文件的内容包括声明约束、找接口、实现方法,用的是反射,如这是一个查询数据库表的所有数据的实现
select id要和要实现的方法名相同,用的反射,mapper的namespace属性要说出要实现的接口,
resultType是返回值类型,要写全类名,数组的话写数组的类型(int、String什么的)
parameterType是接口方法的参数类型,以上就代替了UserDaoImpl文件(接口实现类)
用反射、代理的方式(在用一个SqlMapConfig.xml)读取配置文件里的东西


JDBC每一个操作(增删改,都属于修改数据,不允许,必须手动)默认成一个事务,查询可以做
连接池(用是POOLED,不用加个UN)
原来操作数据库,我需要得到一个操作数据库的链接的对象,如果没有连接池,每操作一次数据库,就要得到一个对象,不用了就销毁,现在可以直接从连接池取
测试类测试一下

测试类
以上仅限于查找,如果需要增删改,则需要手动提交

测试类这里加个true,以后就不用写commit了(一劳永逸)
921

被折叠的 条评论
为什么被折叠?



