Mybatis简单环境搭建
一搭建流程比较简单,主要分如下几步
1 导入需要的jar包
1) Mybatis jar包 (可到官网上下载)
2) Mysql连接数据库jar包:如下图所示
2 新建一个项目,添加User类
目录为 com.model.User
在mysql中添加wj_user这个表,插入两条数据
如下图:
2 UserMapper实体映射器(这个暂时不用写)
3 映射器配置文件UserMapper.xml
关于配置里面已经有了详细的注释,放在com.model目录下
<?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="u1">
<!--resultType和上面-config.xml中的typeAlias里的alias属性对应我个人估计是根据我们给的类完整路径通过反射去获取到一个对象
parameterType告诉我们缺省参数的类型 -->
<select id="selectOne" parameterType="int" resultType="user">
<!--这里参数都是使用#{id}来代替的 -->
select * from wj_user where id=#{id}
</select>
</mapper>
4 配置mybatis-config.xml文件,放在src目录下
主要有以下配置:
1) 定义数据库连接信息的位置 db.properties(后面会定义)
2) 定义用到的表格对象User
3) 定义数据库连接环境
4) 定义引入的Mapper
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfiguration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--这里是指定一个数据库连接的配置文件意思是需要一个配置文件让用户指定好数据库的各种信息这里做好文件的映射注意文件必须和改配置文件同名 -->
<propertiesresource="db.properties"></properties>
<typeAliases>
<!--为实体指定别名如果不想取别名后面就必须使用全名这里就是给类名做一个映射而已 -->
<typeAliasalias="user"type="com.model.User"/>
</typeAliases>
<environmentsdefault="development">
<!--配置多个数据库连接环境这里和 db.properties对应 -->
<environmentid="development">
<transactionManagertype="JDBC"/>
<dataSourcetype="POOLED">
<property name="driver"value="${driver}"/>
<propertyname="url"value="${url}"/>
<propertyname="username"value="${username}"/>
<propertyname="password"value="${password}"/>
</dataSource>
</environment>
</environments>
<!--mappers其实就是JAVABEAN对应发XML文件的映射 -->
<mappers>
<mapperresource="com/model/UserMapper.xml"/>
</mappers>
</configuration>
5 配置do.properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/wanju
username=root
password=root
6 写测试用例
先写连接,因为操作简单,就写在一个main方法里了
publicstaticvoid main(String[] args) {
InputStream input;
try {
input = Resources.getResourceAsStream("mybiatis-config.xml");
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(input);
// SqlSessionFactoryBuilder 是用过即丢,其生命周期只存在于方法体内
SqlSession mySession= sqlSessionFactory.openSession();
// UserMapper userMapper = mySession.getMapper(UserMapper.class);
// User user = userMapper.getUser();
User user= mySession.selectOne("selectOne",1);
//这里读取出来之后会自动和你javabean的属性进行映射起来
System.out.println(user.getName());
mySession.close();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
7 输入结果
8 延伸 其实本例比较特殊 没有用到UserMapper这个接口
在一般情况下是需要用到这个的,这个接口定义了方法名
方法名必须和UserMapper.xml里面的 id名字相同
然后可以通过如下方式来访问
1)先看的测试类的访问形式
package com.model;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class BatisTest {
public static void main(String[] args) {
InputStream input;
try {
input = Resources.getResourceAsStream("mybiatis-config.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(input);
// SqlSessionFactoryBuilder 是用过即丢,其生命周期只存在于方法体内
SqlSession mySession= sqlSessionFactory.openSession();
UserMapper userMapper = mySession.getMapper(UserMapper.class);
User user = userMapper.getUser(1);
// User user= mySession.selectOne("selectOne",1);
//这里读取出来之后 会自动和你javabean的属性进行映射起来
System.out.println(user.getName());
mySession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2)在userMapper接口添加getUser()方法
package com.model;
public interface UserMapper {
User getUser(int id);
}
3) 更改xml文件 主要是更改id
<?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.model.UserMapper">
<!--resultType和上面-config.xml中的typeAlias里的alias属性对应 我个人估计是根据我们给的类完整路径 通过反射去获取到一个对象
parameterType告诉我们缺省参数的类型 -->
<!--这里参数都是使用#{id} 来代替的 -->
<select id="getUser" parameterType="int" resultType="User">
select * from wj_user where id=#{id}
</select>
</mapper>
说明: 下面的链接是这个项目的源码: