文章目录:
1.2 使用数据库属性配置文件(包含properties标签)
1.5 typeAliases标签(设置别名,不推荐使用。。。)
2.2 在mybatis主配置文件中,加入声明插件的标签内容
2.4 编写dao接口方法对应的 sql 语句(mapper文件)
1.MyBatis主配置文件
<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>
在以上的这些标签中,我们主要使用的有:👇👇👇
1. properties
2. settings
3. typeAliases
4. plugins
5. environments
6. mappers
1.2 使用数据库属性配置文件(包含properties标签)
我们需要把数据库的配置信息放到一个单独的文件中,进行独立管理,这个文件的扩展名是 properties。
在resources目录下,创建 XXX.properties 文件。 👇👇👇
而后,在这个文件中,写入下面的内容,使用 key=value的格式定义数据:👇👇👇(数据库连接的相关信息)
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8 jdbc.username=root jdbc.password=12345678
接下来,在mybatis主配置文件中,使用property标签引用外部属性配置文件: 👇👇👇
<!-- 使用外部属性配置文件 resource: 指定类路径下的某个属性配置文件 --> <properties resource="jdbc.properties"/>
最后,在mybatis主配置文件中,找到 <dataSource> 标签,将其中的内容进行修改:👇👇👇
使用 ${key} 来获取相应的 key 对应的 value 值。例如 value="${jdbc.driver}",表示此时value="com.mysql.jdbc.Driver"。
<dataSource type="POOLED"> <!--driver:驱动内容--> <property name="driver" value="${jdbc.driver}"/> <!--连接数据库的url--> <property name="url" value="${jdbc.url}"/> <!--用户名--> <property name="username" value="${jdbc.username}"/> <!--密码--> <property name="password" value="${jdbc.password}"/> </dataSource>
<!--设置日志--> <settings> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings>
1.5 typeAliases标签(设置别名,不推荐使用。。。)
<!--设置别名--> <typeAliases> </typeAliases>
<!--声明插件--> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor" /> </plugins>
1.7 environment标签(配置环境)
<!-- <environments>:配置环境,在这里面可以配置多个 <environment></environment> 子标签 属性:default,必须是某个<environment>标签的id属性值,表示MyBatis默认连接的数据库 --> <environments default="development"> <!-- <environment>:环境标签,表示一个数据库的连接信息 属性:id是自定义的环境标识,唯一值 --> <environment id="development"> <!-- <transactionManager />:事务管理器 属性:type,表示事务管理器的类型 属性值:1)JDBC:使用Connection对象,由MyBatis自己完成事务的处理 2)MANAGED:管理,表示把事务的处理交给容器实现(由其他软件完成事务的处理) --> <transactionManager type="JDBC"/> <!-- <dataSource>:配置数据源:创建Connection对象,连接到数据库 属性:type,数据源的类型 属性值:1)POOLED,MyBatis会在内存中创建PooledDataSource类,管理多个Connection连接对象,使用的连接池 2)UNPOOLED,不使用连接池,MyBatis会在内存中创建UnPooledDataSource类 3)JNDI,Java命名和目录服务 --> <dataSource type="POOLED"> <!--driver:驱动内容--> <property name="driver" value="${jdbc.driver}"/> <!--连接数据库的url--> <property name="url" value="${jdbc.url}"/> <!--用户名--> <property name="username" value="${jdbc.username}"/> <!--密码--> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments>
<!-- 指定其他mapper文件的位置:目的是可以找到其他mapper文件的sql语句 --> <mappers> <!-- 第一种方式:resource="mapper文件的路径" 优点:文件清晰,加载的文件是明确的,文件位置比较灵活 缺点:文件比较多,代码量相对就会比较大,管理难度大 --> <mapper resource="com/bjpowernode/dao/StudentDao.xml"/> <!-- 第二种方式:使用<package>标签 name:包名,即mapper文件所在的包名 特点:把这个包中所有的mapper文件一次加载 使用要求:1. mapper文件和dao接口在同一目录 2. mapper文件和dao接口的名称完全一致 --> <!-- <package name="com.bjpowernode.dao"/> --> </mappers>
2.MyBatis中的分页查询
PageHelper用做数据分页,它在你的 sql 语句后面加入分页的 sql 内容。
例如我们使用 mysql 数据库,它就会在 select * from student 后面加上 limit 语句。
其使用步骤如下:👇👇👇
2.1 在pom.xml中加入pagehelper依赖
<!--PageHelper依赖--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version> </dependency>
2.2 在mybatis主配置文件中,加入声明插件的<plugins>标签内容
<!--声明插件--> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor" /> </plugins>
package com.bjpowernode.dao; import com.bjpowernode.entity.Student; import java.util.List; /** * */ public interface StudentDao { List<Student> selectAllStudent(); }
2.4 编写dao接口方法对应的 sql 语句(mapper文件)
<select id="selectAllStudent" resultType="com.bjpowernode.entity.Student"> select * from student order by id </select>
查询语句之前调用 PageHelper.startPage 静态方法。
除了 PageHelper.startPage 方法外,还提供了类似用法的 PageHelper.offsetPage 方法。
在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个 MyBatis 查询方法会被进行分页。
@Test public void testPageHelper() { SqlSession session = MyBatisUtil.getSqlSession(); StudentDao studentDao=session.getMapper(StudentDao.class); //调用PageHelper的方法 PageHelper.startPage(1,3); List<Student> students=studentDao.selectAllStudent(); students.forEach( stu-> System.out.println("stu === " + stu)); session.close(); }