嗯,前面几天太忙。明天又要去加班。苦逼的程序员。话不多说,开始!
今日目标:Mybatis搭建。
步骤一:在pom.xml中添加以下代码:
<mysql.version>5.1.38</mysql.version>
<mybatis.vision>3.2.8</mybatis.vision>
<mybatis-spring.version>1.2.2</mybatis-spring.version>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- 添加mybatis/spring整合包依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}}</version>
</dependency>
<!--DataBase connector-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
步骤二:在resources/sping文件夹下,添加spring-config-mybatis.xml文件如下,添加完成后添加缺失的各目录及文件,此处仅以spring-config-mybatis.xml为例,详见雏鹰开发附件2– Mybatis相关xml配置。
spring-config-mybatis.xml
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:properties/jdbc.properties"/>
</bean>
<!-- 配置mybatis -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--要映射类的包路径,如果使用了这种方式,则configLocation中不必再进行声明-->
<property name="typeAliasesPackage" value="com.simon.pojo"/>
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
<!-- mapper扫描 -->
<property name="mapperLocations" value="classpath*:mybatis/mapper/*.xml"/>
</bean>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory" index="0"/>
</bean>
步骤三:加入连接池相关配置:
pom.xml:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.11</version>
</dependency>
步骤四:创建User相关类和包,测试Mybatis是否配置成功:
问题1:发现了一个小问题,使用@Component后再用@Autowired找不到类,经过排查,发现Spring中没有配置扫描器,于是在Spring-config.xml中做如下更改后,问题解决:
<!-- 导入外部的properties文件 -->
<context:property-placeholder location="classpath:properties/jdbc.properties"/>
<!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 -->
<context:component-scan base-package="com.simon">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
问题2:java.lang.IllegalArgumentException: Property ‘dataSource’ is required,呐,这个问题就很明显了,粗心咯,代码中少加一句话。在spring-config-mybatis.xml中更改以下语句:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="typeAliasesPackage" value="com.simon.pojo"/><!--要映射类的包路径,如果使用了这种方式,则configLocation中不必再进行声明-->
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
<!-- mapper扫描 -->
<property name="mapperLocations" value="classpath*:mybatis/mapper/*.xml"/>
</bean>
改为
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="typeAliasesPackage" value="com.simon.pojo"/><!--要映射类的包路径,如果使用了这种方式,则configLocation中不必再进行声明-->
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
<!-- mapper扫描 -->
<property name="mapperLocations" value="classpath*:mybatis/mapper/*.xml"/>
**<property name="dataSource" ref="dataSource_blog"/>**
</bean>
问题3:数据库中有数据,而查询的时候却有部分数据是空,为什么呢。经网上查询,原来Mybatis对下划线是不太支持的,只能转为驼峰,需要在mybatis-config.xml中加入以下代码,即可:
问题截图:
<!-- 使用驼峰命名法转换字段。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
问题4:乱码!!!!!在spring-mvc.xml中加入如下代码即可解决:
问题截图:
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
测试结果:
总结:Mybatis框架的搭建,比我想象中的难,这次竟用了近三个小时,也许可能是我中间不专心的缘故吧。总之还算顺利,动手能力仍需加强啊。
明日目标:Ecache和log4j的添加,最大限度完成登录页面