该文章讲解了Mybatis部署,适合初学者。
1 mybatis-config.xml --mybatis配置文件
1.1 代码
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED"><!-- "POOLED"表示使用缓存 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/springmvc?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapping/userMapper.xml"/>
</mappers>
</configuration>
1.2 分析
configuration:根元素
environments:环境;default--使用哪个环节
environment:环境定义,可有多个;id--环节标识
transactionManager:事物处理;type--事物处理的类型,其值有两种JDBC--直接使用JDBC的提交和回滚设置,另一种是MANAGED,几乎什么都不做,让容器来管理事物。
dataSource:数据源配置;type--数据源类型,POOLED--池(常用)。
mappers:映射文件位置。
2 实体类
package com.yxd.model;
/*
* 项目名称:spirngDao
* 包名:com.yxd.model
* 类名:user
* 备注:用户-实体类
*/
public class User {
private String id; //ID
private String name; //姓名
private String password; //密码
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3 DAO接口
注意:使用mybatis时,该接口可以没有实现类,因为mybatis的映射文件就相当于该类的实现类了。
package com.yxd.dao;
import com.yxd.model.User;
/*
* 项目名称:spirngDao
* 包名:com.yxd.dao
* 类名:userDao
* 备注:用户-DAO接口
*/
public interface UserDao {
public User getUserByID(User user); //查询
}
4 mybatis的映射文件
mybatis的映射文件也是mybatis的核心运用。
4.1 代码
<?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="mapping.userMapper"><!-- 相当于UserDao接口的实现类,namespace=该文件的包名+文件名 -->
<select id="getUserByID" parameterType="com.yxd.model.User"
resultType="com.yxd.model.User"><!-- id必须与接口中的方法名一致 -->
select *
from user
where id = #{id}
</select>
</mapper>
4.2 分析
mapper:根元素;namespace--标识,其值为mapper文件的路径(包名)+文件名(不带格式)
select:查询语句,id--对应接口文档的方法名,parameterType--参数,resultType--返回值;#{参数名}--引用参数
5 测试类
package com.yxd.mybatis;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.yxd.model.User;
//测试mybatis部署
public class TestUser {
public static void main(String[] args){
//mybatis的配置文件
String resource="mybatis-config.xml";
//加载mybaatis的配置文件,PS:此过程中也加载了关联的映射文件
InputStream is=TestUser.class.getClassLoader().getResourceAsStream(resource);
System.out.println(is);
//构建sqlSession工厂
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(is);
//创建能执行映射文件中的sql的sqlSession
SqlSession session=sessionFactory.openSession();
String statement="mapping.userMapper.getUserByID";//映射sql 标识字符串
User user=new User();
user.setId("1");
//执行查询返回一个唯一的user对象的sql
user=session.selectOne(statement, user);
System.out.println(user.getName());
}
}