MyBatis高级及其SSM框架搭建
代码生成器
首先meaven项目中导入支持包
1 <dependencies> 2 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> 3 <dependency> 4 <groupId>mysql</groupId> 5 <artifactId>mysql-connector-java</artifactId> 6 <version>5.1.46</version> 7 </dependency> 8 9 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> 10 <dependency> 11 <groupId>org.mybatis</groupId> 12 <artifactId>mybatis</artifactId> 13 <version>3.2.1</version> 14 </dependency> 15 <dependency> 16 <groupId>org.slf4j</groupId> 17 <artifactId>slf4j-api</artifactId> 18 <version>1.6.1</version> 19 </dependency> 20 <dependency> 21 <groupId>org.slf4j</groupId> 22 <artifactId>slf4j-log4j12</artifactId> 23 <version>1.6.1</version> 24 <scope>runtime</scope> 25 </dependency> 26 <dependency> 27 <groupId>log4j</groupId> 28 <artifactId>log4j</artifactId> 29 <version>1.2.14</version> 30 </dependency> 31 32 <!-- https://mvnrepository.com/artifact/junit/junit --> 33 <dependency> 34 <groupId>junit</groupId> 35 <artifactId>junit</artifactId> 36 <version>4.12</version> 37 <!--<scope>test</scope>--> 38 </dependency> 39 </dependencies> 40 41 <build> 42 <plugins> 43 <plugin> 44 <groupId>org.apache.maven.plugins</groupId> 45 <artifactId>maven-compiler-plugin</artifactId> 46 <configuration> 47 <source>1.8</source> 48 <target>1.8</target> 49 </configuration> 50 </plugin> 51 </plugins> 52 </build>
准备代码生成器插件
pom.xml
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。1 build> 2 <plugins> 3 <!--代码生成器插件--> 4 <plugin> 5 <groupId>org.mybatis.generator</groupId> 6 <artifactId>mybatis-generator-maven-plugin</artifactId> 7 <version>1.3.2</version> 8 <configuration> 9 <!--自定义代码生成器的路径--> 10 <!--<configurationFile>yourLocation/mybatis-generator-config.xml</configurationFile>--> 11 <verbose>true</verbose> 12 <overwrite>true</overwrite> 13 </configuration> 14 </plugin> 15 </plugins> 16 </build>
generatorConfig.xml
这个xml在resource中名字必须要是这个,否者会报错。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 5 <!-- 自动生成器的配置(根目录,不做过多介绍)--> 6 <generatorConfiguration> 7 <!-- 8 classPathEntry:可以配置多个,也不配置 9 数据库驱动:这里找到相应的驱动jar包就可以了(注:不同数据库的jar不一样) 10 location:里面的是路径(也可以直接写绝对路径 -> 如:E:\mybatis\mysql-connector-java-5.1.26-bin.jar) 11 --> 12 <classPathEntry location="G:\openSource\mysql-connector-java-5.1.26-bin.jar"/> 13 <!-- 14 context:用于生成一组对象的环境(至少配置1个,可以配置多个) 15 id:表达唯一的名称 16 targetRuntime:用于指定生成的代码的运行环境(MyBatis3/MyBatis3Simple) 17 MyBatis3:默认值【生成更完整的功能】 18 MyBatis3Simple:不会生成与Example(案例)相关的方法 19 --> 20 <context id="DB2Tables" targetRuntime="MyBatis3Simple" > 21 <!-- 22 用于配置如果生成注释信息(最多可以配置一下) 23 suppressAllComments:阻止生成注释 ,默认为false 24 suppressDate:阻止生成的注释 时间戳,默认为false 25 addRemarkComments:注释是否添加数据库表的备注信息,默认为false 26 --> 27 <commentGenerator> 28 <property name="suppressDate" value="true"/> 29 <property name="suppressAllComments" value="true"/> 30 </commentGenerator> 31 <!-- 32 这个应该比较清楚,配置连接数据库的基本信息 33 --> 34 <jdbcConnection driverClass="com.mysql.jdbc.Driver" 35 connectionURL="jdbc:mysql:///mybatis" 36 userId="root" password="admin"> 37 </jdbcConnection> 38 <!-- 39 用于指定JDBC类型和Java类型如何转换,最多可以配置一个 40 forceBigDecimals:控制是否强制将DECIMAL和NUMERIC类型的JDBC字段转换成Java类型的 BigDecimal 41 默认为false,一般不需要配置 42 --> 43 <javaTypeResolver> 44 <property name="forceBigDecimals" value="false"/> 45 </javaTypeResolver> 46 47 <!-- 48 javaModelGenerator:用来控制生成的实体类 49 targetPackage:生成Model类存放位置(包名) 50 targetProject:指定目标项目路径(根目录) 51 对应的子属性: 52 trimStrings:判断是否对数据库查询结果进行trim操作(默认false) 53 --> 54 <javaModelGenerator targetPackage="cn.itsource._02_generator.domain" targetProject="src/main/java"> 55 <property name="trimStrings" value="true"/> 56 </javaModelGenerator> 57 <!-- 58 sqlMapGenerator:生成映射文件存放位置(Mapper.xml文件) 59 targetPackage:生成SQL映射文件(XML文件)在哪个包中 60 targetProject:指定目标项目路径(根目录) 61 --> 62 <sqlMapGenerator targetPackage="cn.itsource._02_generator.mapper" targetProject="src/main/resources"> 63 </sqlMapGenerator> 64 65 <!-- 66 javaClientGenerator:Java客户端生成器(生成Dao/Mapper的接口) 67 该 标签可选(最多配置一个),如果不配置,就不会生成Mapper接口 68 type:选择客户端代码生成器 69 MyBatis3 70 ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件 71 MIXEDMAPPER:XML和注解混合形式 72 XMLMAPPER:所有方法都在XML中(接口调用依赖XML) 73 MyBatis3Simple 74 ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件 75 XMLMAPPER:所有方法都在XML中(接口调用依赖XML) 76 targetPackage:生成Mapper接口存放的包名 77 targetProject:指定目标项目路径 78 --> 79 <javaClientGenerator type="XMLMAPPER" targetPackage="cn.itsource._02_generator.mapper" targetProject="src/main/java"> 80 <property name="enableSubPackages" value="true"/> 81 </javaClientGenerator> 82 <!-- 83 table:生成对应表及类名 84 tableName:对应表名(注:%代表所有) 85 domainObjectName:对应的类名 86 generatedKey:主键自增的id字段(针对当前 数据库配置MySQL) 87 --> 88 <table tableName="employee" domainObjectName="Employee"> 89 <generatedKey column="id" sqlStatement="MySql" /> 90 </table> 91 92 <!-- 93 <table tableName="%" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" 94 enableSelectByExample="false" selectByExampleQueryId="false" > 95 </table> 96 --> 97 </context> 98 </generatorConfiguration>
MyBatis拦截器
1 //配置查询拦截 2 @Intercepts( 3 @Signature( 4 type = Executor.class, 5 method = "query", 6 args = {MappedStatement.class,Object.class, RowBounds.class, ResultHandler.class} 7 8 ) 9 ) 10 public class myinterceptor implements Interceptor { 11 12 @Override 13 public Object intercept(Invocation invocation) throws Throwable { 14 System.out.println("这里是拦截器"); 15 return invocation.proceed(); 16 } 17 18 @Override 19 public Object plugin(Object o) { 20 return Plugin.wrap(o,this); 21 } 22 23 @Override 24 public void setProperties(Properties properties) { 25 26 } 27 }
拦截器的配置
在mybatis-config.xml中进行配置
<!--插件配置(拦截器配置)--> <plugins> <plugin interceptor="cn.itsource._02_generator.interceptor.HelloInterceptor"> <property name="dbType" value="mySql" /> </plugin> </plugins>
分页插件
引入这个插件
<!-- 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.0</version> </dependency>
插件配置
在mybatis-config.xml中进行配置
<plugins> <!--配置分页插件--> <plugin interceptor="com.github.pagehelper.PageInterceptor" /> </plugins>
使用分页插件
1 @Test 2 public void testPage() throws Exception{ 3 //分页 pageNum:第几页 pageSize:每页条数 4 PageHelper.startPage(1, 10); 5 6 SqlSession session = MyBatisUtil.openSession(); 7 EmployeeMapper mapper = session.getMapper(EmployeeMapper.class); 8 List<Employee> employees = mapper.selectAll(); 9 Page page = (Page) employees; 10 System.out.println("第几页:"+page.getPageNum()); //第几页 11 System.out.println("总页数:"+page.getPages()); //总页数 12 System.out.println("总条数:"+page.getTotal()); //总页数 13 System.out.println("结果:"+page.getResult()); 14 15 page.getResult().forEach(e -> System.out.println(e)); 16 }
SSM集成
首先是jdbc.properites
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///mybatis jdbc.username=root jdbc.password=admin
然后配置applicationContext.xm
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:tx="http://www.springframework.org/schema/tx" 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 9 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 10 "> 11 12 <!--扫描Service层--> 13 <context:component-scan base-package="cn.newsoft.service" /> 14 15 <!--引入jdbc.properties--> 16 <context:property-placeholder location="classpath:jdbc.properties" /> 17 <!--创建数据源(dataSource)--> 18 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 19 <property name="driverClassName" value="${jdbc.driverClassName}" /> 20 <property name="url" value="${jdbc.url}" /> 21 <property name="username" value="${jdbc.username}" /> 22 <property name="password" value="${jdbc.password}" /> 23 </bean> 24 25 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 26 <property name="dataSource" ref="dataSource" /> 27 <!--XML的映射--> 28 <property name="mapperLocations" value="classpath:cn/newsoft/mapper/*.xml" /> 29 <!--为所有相应的包中的类取别名--> 30 <property name="typeAliasesPackage" value="cn.newsoft.domain" /> 31 </bean> 32 33 34 <!--创建映射器--> 35 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 36 <property name="basePackage" value="cn.newsoft.mapper" /> 37 </bean> 38 39 <!--配置事务管理器--> 40 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 41 <property name="dataSource" ref="dataSource" /> 42 </bean> 43 <!--配置标签支持事务--> 44 <tx:annotation-driven transaction-manager="transactionManager" /> 45 </beans>
l这样就完成了mybatis和sping的集成了,需要注意的是,在mapper.xml在resource中的位置需要与在src中mapper的位置对应上才行
Spring与SpringMVC
applicationContext-mvc.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xmlns:mvc="http://www.springframework.org/schema/mvc" 7 xsi:schemaLocation="http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans.xsd 9 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 10 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 11 "> 12 <!--配置包扫描--> 13 <context:component-scan base-package="cn.newsoft.controller"></context:component-scan> 14 <!--注解支持--> 15 <mvc:annotation-driven></mvc:annotation-driven> 16 17 <!--静态资源访问--> 18 <mvc:default-servlet-handler /> 19 <!--视图解析器--> 20 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 21 <property name="prefix" value="/WEB-INF/views"></property> 22 <property name="suffix" value=".jsp"></property> 23 </bean> 24 <!--上传文件--> 25 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 26 <!-- 设置上传文件的最大尺寸为1MB --> 27 <property name="maxUploadSize"> 28 <value>1048576</value> 29 </property> 30 </bean> 31 32 </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd" version="3.0"> <!--解决乱码问题--> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--读取sping配置文件--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--读取mvc文件--> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-mvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>

更多精彩