springMvc整合mybatis
1.1 pom注入依赖
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!--这个是日志文件,用来优化mybatis的-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!-- junit是用来测试dao层的-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
1.2 配置mybatis_config.xml文件
这个文件要配置在resources目录下。 配置内容
<?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>
<!--开启延迟加载-->
<setting name="lazyLoadingEnabled" value="true" />
<!--是否开启积极懒加载,false 按需加载 ,默认是true-->
<setting name="aggressiveLazyLoading" value="false" />
<!--开启二级缓存 总开关-->
<setting name="cacheEnabled" value="true" />
</settings>
<typeAliases>
<!-- <typeAlias type="net.seehope.mybatis.pojo.User" alias="user" /> -->
<!--批量别名 首字母大小写都行-->
<package name="net.seehope.mybatis.pojo" />
</typeAliases>
<environments default="development">
<environment >
<!--配置JDBC事务控制,由mybatis 管理-->
<transactionManager type="JDBC"/>
<!--默认使用dbcp连接池-->
<!--这儿value要使用自己的数据库,我这里是使用了配置文件-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
<!-- <environment >
配置JDBC事务控制,由mybatis 管理
<transactionManager type="JDBC"></transactionManager>
默认使用dbcp连接池
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/spring_jdbc" />
<property name="username" value="root" />
<property name="password" value="qhxj,YRAN941211" />
</dataSource>
</environment>
-->
</environments>
</configuration>
mybatis 的dao层
1.1 dao层
dao层就是使用Sql语句,或者就是拼接sql语句操作数据库,但在spring框架中我们可以通过dao层映射的操作去省去传统Jdbc的一些步骤,像dao层的实例使用。
1.2 实现
mybatis对于dao层的实现,采用了一种代理开发模式,我们可以通过自己编写的Mapper接口 (以前的dao接口),然后mybatis可以通过接口去创建相应动态代理对象,在代理对象上实现相应的方法。
首先我们要创建对应的接口,例如这里我创建一个userMapper接口
public interface UserMapper {
//这个接口中有一个添加用户的方法,也可以写多个。
int addUser();
}
然后我们要去配置相应的配置文件在resources目录下。基本样式如下
<?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">
<!-- namespace:此时用mapper代理方式,它的值必须等于对应mapper接口的全限定名 -->
<!--namespace的名字就是java目录后一级,mapper里面写相应的sql语句-->
<mapper namespace="com.example.ktp.mapper.UserMapper">
<!--语句的id指向接口中的方法名-->
<insert >
insert into ktp_user(name,password) values ("ss","ssssss");
</insert>
<!--select语句必须要有返回类型,resultType 或 resultMap-->
<select resultType="UserMapper">
</select>
</mapper>
这样我们就写好了一个基础的dao,但如何去检验呢,就需要junit
1.3 测试
测试文件我们要写在test目录下,我们通过加载配置文件,和去创建一个虚拟的测试实类. 例如:
import com.example.ktp.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class test_user_mapper {
@Test
public void testUser() throws IOException {
InputStream is= Resources.getResourceAsStream("mybatis_config.xml");
//通过SqlSessionFactoryBuilder去构建SqlSessionFactory
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
//再通过SqlSessionFactory和配置文件去构建SqlSession
SqlSessionFactory sqlSessionFactory=builder.build(is);
//Sqlsession文件充当java程序和数据库的桥梁
SqlSession sqlSession=sqlSessionFactory.openSession(true);
//Sqlsession文件通过接口的class文件去创建类
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
//使用这个方法,返回为1,则成功了
int t=userMapper.addUser();
System.out.println("Result: "+t);
}
}
总而言之,mybatis很大程度上的减少了我们的代码量