mybatis框架的使用
1)单独使用jdbc解决实际问题
2)使用mybatis进行原始dao开发
3)使用mybatis进行mapper接口的dao开发
mybatis框架的配置
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
People.xml配置文件的源代码
使用dao方法开发的测试方法
这里用到的jar包有mybatis,单元测试jar包和数据库连接jar包
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>
People.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="apple">
<select id="findPeopleById" parameterType="int" resultType="com.cn.mybatis.po.People">
select * from people where id=#{id}
</select>
</mapper>
public class People {
private int id;
private String username;
private char sex;
private int age;
//这里省略掉了setters和getters的方法
}
public interface PeopleInterface {
public People findPeopleById(int i) throws Exception;
}
public class PeopleImp implements PeopleInterface {
private SqlSessionFactory sqlSessionFactory=null;
public PeopleImp(SqlSessionFactory sqlSessionFactory){
this.sqlSessionFactory=sqlSessionFactory;
}
public People findPeopleById(int i) throws Exception {
SqlSession sqlSession=sqlSessionFactory.openSession();
People people=sqlSession.selectOne("apple.findPeopleById",i);
if(sqlSession!=null){
sqlSession.close();
}
return people;
}
}
使用dao方法开发的测试方法
public class testPeopleImp {
private PeopleInterface peopleInterface=null;
@Before
public void setUp()throws Exception{
String aa="SqlMapConfig.xml";
InputStream inputStream=Resources.getResourceAsStream(aa);
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
peopleInterface =new PeopleImp(sqlSessionFactory);
}
@Test
public void testFindPeopleById() throws Exception{
People people=peopleInterface.findPeopleById(1);
System.out.println(people);
}
}
这里用到的jar包有mybatis,单元测试jar包和数据库连接jar包
配置文件中的namespace可以是任意名称,在java中通过namespace的名称获得statement的id从而获得sql语句。