创建maven工程
针对初学者,也是为了加强自己的记忆,写了这篇关于mybatis的使用步骤以及拓展分页控件的使用,第一次写博客,不喜勿碰。
导入依赖
<!-- mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!-- jdbc驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!-- pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
对于mysql-connector-java的版本号version 不宜过高 ,新版本会有一个serverTimezone不正确的错误 默认是UTC,但是我们属于东八区(UTC+8)避免多次修改使用相对稳定的版本5.1.49即可
创建pojo层
这里只是简单的举个例子
public class User {
private String name;
private Integer price;
,,,, set get , 重写 toString
需要用到算hash值以及比较对象(重写equals,hashCode方法),,,
}
创建Dao层
这层是对数据操作的代码集(具体需要干什么 增删改查 )。
定义接口:
public interface UserDao {
List<User> selectUser();
}
对应一个Dao 编写相应的mapper配置文件
<?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.fwj.dao.UserDao">
<select id="selectUser" resultType="com.fwj.user.User" >
select name,price from people
</select>
</mapper>
有几点需要注意
- namespace:需要对应Dao接口的全限定名称——包名+类名。
- mapper根标签里面的 < select>< insert>< delete>< update>中的id与接口 的方法名对应
- resultType 返回结果类型 后面跟pojo的全限定名称——包名+类名
- parameterType 参数数据类型 全限定名称——包名+类名
mybatis主配置文件
连接到数据库的配置文件
<?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>
<!-- 连接外部资源-->
<properties resource="application.properties"/>
<!-- 设置:定义mybatis的一些全局性设置 -->
<!-- 插件:mybatis的插件,分页处理 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
<!-- 环境:配置mybatis的环境 -->
<environments default="mysql">
<!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量 -->
<environment id="mysql">
<!-- 事务管理器 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.name}"/>
<property name="password" value="${jdbc.pass}"/>
</dataSource>
</environment>
</environments>
<!-- 映射器:指定映射文件或者映射类 -->
<mappers>
<mapper resource="com\fwj\dao\Usermapper.xml"/>
</mappers>
</configuration>
可以分为以下几个模块:
①
<?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">
头文件,固定的。mybatis-3-config.dtd 说明文件的类型
②
<configuration>
</configuration>
根标签 ,里面是对 连接源,事务管理,mapper,插件的说明
<!-- 连接外部资源-->
<properties resource="application.properties"/>
连接外部资源 , 可选,方便后续修改配置
<!-- 插件:mybatis的插件,分页处理 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
分页插件 ,各种插件也是类似的写法
③
<!-- 环境:配置mybatis的环境 -->
<environments default="mysql">
<!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量 -->
<environment id="mysql">
<!-- 事务管理器 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.name}"/>
<property name="password" value="${jdbc.pass}"/>
</dataSource>
</environment>
</environments>
连接数据库管理
<environment id="mysql">
<!-- 事务管理器 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.name}"/>
<property name="password" value="${jdbc.pass}"/>
</dataSource>
</environment>
environment可以是多个,每一个对用一个数据库的基本访问配置 项目通过 id 与 environments 中的 default=“mysql” 属性对应
④
<mappers>
<mapper resource="com\fwj\dao\Usermapper.xml"/>
</mappers>
对应的所有mapper 可以有多个引用 resource 里面的路径是 target下的classes路径 默认java包里面的properties和xml文件是被忽略的 所以要在pom-build中添加下面的插件,防止被mapper被忽略(可通过maven的编译(compile)来查看target classes下是否存在xml或者properties文件)
此处涉及到maven工程的生命周期.
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
测试结果
/**
* 使用mybatis的动态代理,使用Sqlsession.getMapper(dao接口)
* getMapper能获取到接口对应的实现类对象
*/
//读取mybatis.xml文件
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
//创建Sqlsessionfactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//通过Sqlsessionfactory创建Sqlsession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//使用getMapper(dao接口.class)
UserDao userDao = sqlSession.getMapper(UserDao.class);
//分页处理:pageNum:当前的页数,pageSize:每页多少行
PageHelper.startPage(2,3);
List<User> users = userDao.selectUser();
// String sql = "com.fwj.dao.UserDao"+"."+"selectUser";
// List<User> users = sqlSession.selectList(sql);
for(User u :users){
System.out.println(u);
}
这里看到运行结果没有问题,ojbk 不能再假正常了
忘了自我介绍,,,我是小猪,一个自学java的应届生。第一次写博客,很多地方欠缺不足,希望以后继续努力,持续改进。