1.首先创建一个maven的webapp项目,下图是整体项目结构!!
2.在pom.xml文件中引入mybatis相关依赖包
注:下面截图中最上面两个是使用mybatis连接mysql数据库所用到的依赖包,log4j是输出日志的依赖包,junit是单元测试的依赖包,fastjson是为了把解析查询出的数据对象转成json格式。
3.进行连接数据库的配置操作(ps:数据库的源不直接写在config.xml文件中,而是从properties文件中读取),在resources文件夹下新建db/db.properties和spring/mybatis-spring.xml文件。
db.properties文件
jdbc.driverName = com.mysql.jdbc.Driver
jdbc.url2 = jdbc:mysql://127.0.0.1:3306/test?
username = root
password = 123456
mybaties-spring.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>
<!--指定数据库的配置文件-->
<properties resource="props/db.properties" />
<environments default = "mysql">
<!--环境配置,即连接的数据库-->
<environment id = "mysql">
<!--指定事务管理类型,type="jdbc"指直接简单使用了jdbc的提交和回滚设置-->
<transactionManager type = "JDBC" />
<!--datasource 指数据源的配置,POOLED是JDBC连接对象的数据源连接池的实现-->
<dataSource type = "POOLED" >
<property name="driver" value="${jdbc.driverName}"/>
<property name="url" value="${jdbc.url2}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!--mappers 告诉了mybatis去哪里找持久化类的映射文件-->
<mappers>
<mapper resource="mapper/AccountMapper.xml"/>
</mappers>
<!-- <mappers>-->
<!-- <mapper class="com.mybatis.mappers.AccountMapper"/>-->
<!-- </mappers>-->
</configuration>
4.在src/main下新建dao/AccountMapper接口文件,用于定义操作的接口,在src/main下新建vo/AccountVo文件,用于接口查询返回的对象值.
AccountMapper接口文件
package com.mybatis.dao;
import com.mybatis.vo.AccountVo;
public interface AccountMapper {
public AccountVo queryUserByName(String name);
}
AccountVo对象文件
package com.mybatis.vo;
import java.util.Date;
public class AccountVo {
private String id;
private String Name;
private String sex;
private Date createDate;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}
5.创建AccountMapper对应的xml映射文件(注:dao下的接口名字和xml的名字以及namesapace的名字保持一致,防止出现报错,虽然文档里写的namespace只要唯一即可,但是实际执行会报错)
AccountMapper.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:命名空间,随便写,一般保证命名空间唯一 -->
<mapper namespace="AccountMapper">
<!-- statement,内容:sql语句。id:唯一标识,随便写,在同一个命名空间下保持唯一
resultType:sql语句查询结果集的封装类型,tb_user即为数据库中的表
-->
<select id="queryUserByName" resultType="com.mybatis.vo.AccountVo" parameterType="String">
select * from user where name = #{name}
</select>
</mapper>
6.编写测试类进行验证
import com.alibaba.fastjson.JSON;
import com.mybatis.vo.AccountVo;
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 MybatisTest {
@Test
public void tt() throws IOException {
// 读取mybatis-config.xml配置文件
InputStream inputStream = Resources.getResourceAsStream("spring/mybatis-config.xml");
// 初始化mybaties,创建sqlSessionFactory类的实例对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建session实例
SqlSession sqlSession = sqlSessionFactory.openSession();
AccountVo accountVo = sqlSession.selectOne("AccountMapper.queryUserByName","xiaoming");
System.out.println("accountVo:"+ JSON.toJSONString(accountVo));
sqlSession.close();
}
}