三层框架结构图:
Springmvc代替web层和前端进行交互 接受请求和返回响应
Mybatis代替dao层和数据库进行交接
spirng管理对象,以后的对象都不是new 而是跟spring要
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
1、 数据库连接创建、释放频繁造成系统资源浪费,从而影响系统性能。如果使用数据库连接池可解决此问题。
2、 Sql语句在代码中硬编码,造成代码不易维护,实际应用中sql变化的可能较大,sql变动需要改变java代码。
3、 使用preparedStatement向占位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。
4、 对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便。
老师在3.28日在群里发的
下载下来
解压后:
我们要把mybatis-3.2.7.jar和
lib里面的所有
都复制eclipe里
然后吧所有的都Build path
现在你的项目创建一个Source Folder(可以不写路径,直接在跟路径下)资源文件夹叫config
然后在config里新建文件file叫
然后吧
# Global logging configuration log4j.rootLogger=DEBUG, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
复制到log4j.properties里面去
配置完事后
我们需要在config下面创建一个 SqlMapConfig.xml
然后吧这些都粘贴到xml文件里去
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 和spring整合后 environments配置将废除 --> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理 --> <transactionManager type="JDBC" /> <!-- 数据库连接池 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> </configuration>
然后吧密码改成你数据库的密码(这里我的是123456)
然后在创建实体类对象pojo
private int id; private String username;// 用户姓名 private String sex;// 性别 private Date birthday;// 生日 private String address;// 地址
然后gat,set,toString都点出来
上面的date改成Sting
这里的pojo就是之前的我们的domin 专门写封装类 实体类对象的地方。
sql映射文件
新建一个包叫mapper包(就是之前的dao层专门写sql的地方)
然后其下创建一个xml文件叫Usersql就和之前的(Userdao一样)
然后把约束都粘过去
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
然后ait+/点出来mapper
必须加namespace这样好调用和区分
我们不可能只创建一个mapper(不可能只创建一个dao),所以我们要让 mapper和config之间建立关系
在config.xml下面写mappers。 resource里写路径(完整的包名加文件名)
开始写sql语句
我们要在UserMapper里写sql语句
id:是方法名 类似于dao层的方法名
parameterType:是参数 类型
resultType:返回值类型。因为这里是select * 所以返回的肯定是个对象 如果是自定义对象的话就要完整的包名加类名。如果不是自定义的话 就直接写就可以了
#{}:就是占位符的意思,就和之前dao里面的?是一样的
原文:https://www.cnblogs.com/www1842564021/p/12587315.html