mybatis下载地址:https://github.com/mybatis/mybatis-3/
mybatis用到jar包:myBatis-3.4.1.jar、mysql-connector-java-5.1.37-bin.jar、log4j.jar
mybatis整合Spring用到的jar包:mybatis-spring-1.3.0.jar
一、 配置SqlSessionFactory
1、在Spring的配置文件中进行配置,配置事务管理器(配置Spring时有介绍):
<!-- 连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl"
value="jdbc:mysql://127.0.0.1:3306/paperanalyse?useUnicode=true&characterEncoding=utf-8"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
</bean>
<!-- 事务 -->
<bean id="dataSourceTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 基于注解使用事务 -->
<tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
2、整合Spring和mybatis:
<!-- 整合spring与mybatis -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置数据源 -->
<property name="dataSource" ref="dataSource"></property>
<!-- mybatis配置文件 -->
<property name="configLocation" value="/WEB-INF/conf/mybatis-conf.xml"></property>
<!-- mybatis的sql映射文件 -->
<property name="mapperLocations" value="classpath:com/ssm/framework/mapper/*.xml"></property>
<!-- 配置类型别名 -->
<property name="typeAliasesPackage" value="com.ssm.framework.beans"></property>
</bean>
mybatis的基础配置文件为/WEB-INF/conf/mybatis-conf.xml
3、MapperScannerConfigurer
<!-- MapperScannerConfigurer 为指定包下的Mapper接口批量生成代理实现类,查找类路径下的映射器并自动将它们创建成MapperFactoryBean -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ssm.framework.dao"></property>
</bean>
二、mybatis-conf.xml
<?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>
<!-- settings配置项 -->
<settings>
<!-- 映射下划线到驼峰命名 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 设置Mybatis对null值的默认处理 -->
<setting name="jdbcTypeForNull" value="NULL"/>
<!-- 开启延迟加载 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 设置加载的数据是按需还是全部 -->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 配置开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
三、导入log4j.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
四、测试
1、表结构:
2、创建UserBean,代码如下:
package com.ssm.framework.beans;
public class UserBean {
//用户名
private String username;
//密码
private String password;
//用户类型
private String usertype;
public String getUsertype() {
return usertype;
}
public void setUsertype(String usertype) {
this.usertype = usertype;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3、创建接口LoginDao.java,代码如下:
package com.ssm.framework.dao;
import java.util.Map;
import com.ssm.framework.beans.UserBean;
public interface LoginDao {
public UserBean loginFun(Map<String, Object> map);
}
4、创建xml配置文件,代码如下:
<?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.ssm.framework.dao.LoginDao">
<!-- 获取用户信息 -->
<select id="loginFun" resultType="com.ssm.framework.beans.UserBean">
SELECT * FROM user
where 1=1 and username = #{username} and password = #{password}
</select>
</mapper>
namespace为接口的全限定名,resultType为返回类型
5、在Service的实现类中需要使用@Autowired(自动装配)注入Bean,代码如下:
package com.ssm.framework.service.Impl;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ssm.framework.beans.UserBean;
import com.ssm.framework.dao.LoginDao;
import com.ssm.framework.service.LoginService;
@Service
public class LoginServiceImpl implements LoginService{
@Autowired
private LoginDao loginDao;
@SuppressWarnings("unchecked")
@Override
public JSONObject loginFun(JSONObject param) {
JSONObject json = new JSONObject();
Map<String, Object> params = JSONObject.parseObject(JSON.toJSONString(param), Map.class);
UserBean userBean = loginDao.loginFun(params);
if(userBean != null) {
json.put("usermsg", userBean);
System.out.println(userBean.getUsername());
json.put("success", true);
} else {
json.put("message", "用户名或密码错误");
json.put("success", false);
}
return json;
}
}
6、页面输入用户名和密码,点击登录按钮:
7、控制台打印: