mybatis框架的使用
1)单独使用jdbc解决实际问题
2)使用mybatis进行原始dao开发
3)使用mybatis进行mapper接口的dao开发
Mybatis的配置
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
people实例的源代码
Mapper测试类
1)单独使用jdbc解决实际问题
2)使用mybatis进行原始dao开发
3)使用mybatis进行mapper接口的dao开发
Mybatis的配置
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
数据库中的表结构如图
SqlMapConfig.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3307/test" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="People.xml"/>
</mappers>
</configuration>
<?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.cn.mybatis.mapper.PeopleInterface">
<select id="findPeopleById" parameterType="int" resultType="com.cn.mybatis.po.People">
select * from people where id=#{id}
</select>
</mapper>
people实例的源代码
public class People {
private int id;
private String username;
private char sex;
private int age;
//这里省略掉了setters和getters的方法
}
import com.cn.mybatis.po.People;
public interface PeopleInterface {
public People findPeopleById(int i) throws Exception;
}
Mapper测试类
public class testPeople extends TestCase{
private SqlSessionFactory sqlSessionFactory=null;
@Before
public void setUp() throws Exception{
String aa="SqlMapConfig.xml";
InputStream inputStream=Resources.getResourceAsStream(aa);
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testFindPeopleById()throws Exception{
SqlSession sqlSession=sqlSessionFactory.openSession();
PeopleInterface mapper=sqlSession.getMapper(PeopleInterface.class);
People people=mapper.findPeopleById(1);
System.out.println(people);
if(sqlSession!=null){
sqlSession.close();
}
}
}
这里用到的jar包有mybatis,单元测试jar包和数据库连接jar包
Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。
Mapper接口开发需要遵循以下规范:
1、 Mapper.xml文件中的namespace与mapper接口的类路径相同。
2、 Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
4、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同