搭建SSM的大体流程
1.pom.xml中需加入spring,mybatis,spring和mybatis的整合依赖,以及PageHelper依赖
<textarea readonly="readonly" name="code" class="java">
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.0</version>
</dependency>
</textarea>
5.1.0与之前版本有一些区别,
新版拦截器是 com.github.pagehelper.PageInterceptor。 com.github.pagehelper.PageHelper 现在是一个特殊的 dialect 实现类,是分页插件的默认实现类,提供了和以前相同的用法。
pageHelper使用具体查看官方文档
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
配置.mybatis.generator 自动生成mapper层,数据对应实体pojo
- <build>
- <finalName>mmall</finalName>
- <plugins>
- <plugin>
- <!--mybatis 三剑客之一 自动生成mapper代码-->
- <groupId>org.mybatis.generator</groupId>
- <artifactId>mybatis-generator-maven-plugin</artifactId>
- <version>1.3.2</version>
- <configuration>
- <verbose>true</verbose>
- <overwrite>true</overwrite>
- </configuration>
- </plugin>
- </build>
generator 还需一个配置文件
- <generatorConfiguration>
- <!--导入属性配置-->
- <properties resource="datasource.properties"></properties>
- <!--指定特定数据库的jdbc驱动jar包的位置-->
- <classPathEntry location="${db.driverLocation}"/>
- <context id="default" targetRuntime="MyBatis3">
- <!-- optional,旨在创建class时,对注释进行控制 -->
- <commentGenerator>
- <property name="suppressDate" value="true"/>
- <property name="suppressAllComments" value="true"/>
- </commentGenerator>
- <!--jdbc的数据库连接 -->
- <jdbcConnection
- driverClass="${db.driverClassName}"
- connectionURL="${db.url}"
- userId="${db.username}"
- password="${db.password}">
- </jdbcConnection>
- <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
- <javaTypeResolver>
- <property name="forceBigDecimals" value="false"/>
- </javaTypeResolver>
- <!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类
- targetPackage 指定生成的model生成所在的包名
- targetProject 指定在该项目下所在的路径
- -->
- <!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">-->
- <javaModelGenerator targetPackage="demo.pojo" targetProject="./src/main/java">
- <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
- <property name="enableSubPackages" value="false"/>
- <!-- 是否对model添加 构造函数 -->
- <property name="constructorBased" value="true"/>
- <!-- 是否对类CHAR类型的列的数据进行trim操作 -->
- <property name="trimStrings" value="true"/>
- <!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 -->
- <property name="immutable" value="false"/>
- </javaModelGenerator>
- <!--mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 -->
- <!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">-->
- <sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources">
- <property name="enableSubPackages" value="false"/>
- </sqlMapGenerator>
- <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
- type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
- type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
- type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
- -->
- <!-- targetPackage:mapper接口dao生成的位置 -->
- <!--<javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java">-->
- <javaClientGenerator type="XMLMAPPER" targetPackage="demo.dao" targetProject="./src/main/java">
- <!-- enableSubPackages:是否让schema作为包的后缀 -->
- <property name="enableSubPackages" value="false" />
- </javaClientGenerator>
- <table tableName="demo" domainObjectName="Demo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
- <!-- geelynote mybatis插件的搭建 -->
- </context>
- </generatorConfiguration>
配置好后 在IDEA右侧MAVEN projects栏里找到generator双击它即可自动生成mapper,pojo代码
2.spring 配置相关bean
(1).创建dataSource
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
(2).创建sqlSession,在其中配置好pageHelper
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource"/>
- <!--Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath
- 加载文件,如bean的定义文件.classpath*:的出现是为了从
- 多个jar文件中加载相同的文件.classpath:只能加载找到的第一个文件.-->
- <property name="mapperLocations" value="classpath*:mappers/*Mapper.xml"/>
- <!--mybatis主配置文件,这里省略-->
- <!-- <property name="configLocation" value=""/>-->
- <!--分页插件配置-->
- <property name="plugins">
- <array>
- <bean class="com.github.pagehelper.PageInterceptor">
- <property name="properties">
- <!--使用下面的方式配置参数,一行配置一个 -->
- <value>
- helperDialect=mysql
- </value>
- </property>
- </bean>
- </array>
- </property>
- <!--pagehelper 之前版本的配置-->
- <!-- <property name="plugins">
- <array>
- <bean class="com.github.pagehelper.PageHelper">
- <property name="properties">
- <value>dialect=mysql</value>
- </property>
- </bean>
- </array>
- </property>-->
- </bean>
其中有一个MapperScannerConfigurer,会自动生成dao层的实体,在使用@Autowired注入dao层类时会IDEA会找不到该bean,但不影响实际运行
- <bean name="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="demo.dao"/>
- <!--<property name="sqlSessionFactoryBeanName" ref="sqlSessionFactory"/>-->
- </bean>
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource"/>
- <!--Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath
- 加载文件,如bean的定义文件.classpath*:的出现是为了从
- 多个jar文件中加载相同的文件.classpath:只能加载找到的第一个文件.-->
- <property name="mapperLocations" value="classpath*:mappers/*Mapper.xml"/>
- <!--mybatis主配置文件,这里省略-->
- <!-- <property name="configLocation" value=""/>-->
- <!--当前版本分页插件配置 -->
- <property name="plugins">
- <array>
- <bean class="com.github.pagehelper.PageInterceptor">
- <property name="properties">
- <!--使用下面的方式配置参数,一行配置一个 -->
- <value>
- helperDialect=mysql
- </value>
- </property>
- </bean>
- </array>
- </property>
- <!--之前版本的配置-->
- <!-- <property name="plugins">
- <array>
- <bean class="com.github.pagehelper.PageHelper">
- <property name="properties">
- <value>dialect=mysql</value>
- </property>
- </bean>
- </array>
- </property>-->
- </bean>
3.pageHelper简单使用
- //pageHelper会在之后的sql查询中加上分页查询语句
- PageHelper.startPage(1,3);
- if(demoMapper==null){
- System.out.println("null");
- }
- List<Demo> demoList=demoMapper.getDemo("12");
- PageInfo<Demo> result=new PageInfo<>(demoList);