第一步:
导入jar包:
mybatis.jar sqljdbc.jar
因为我用的是Sql Server所以这里是sqlj jar
需要将src中的包,添加到类路径中去。
第二步:
建立实体类:
需要注意的一点是实体类中属性需要和数据库中的属性名想对应起来,也就是说是相同的。
public class Person {
private int id;
private String name;
private int age;
public Person() {
}
public Person(int id,String name,int age) {
this.age=age;
this.id=id;
this.name=name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return this.id+","+this.name+","+this.age;
}
在创建一个测试类:
public class TestMyBatis {
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
//加载MyBatis配置文件(为了访问数据库)
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(reader);
//session--connection
SqlSession session=sessionFactory.openSession();
String statement="org.awen.entity.personMapper.selectBlog";
Person student=session.selectOne(statement,1);
System.out.println(student);
session.close();
}
在该包中创建一个Mapper.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">
<!-- namespace:该mapper.xml映射文件的 唯一标识 -->
<mapper namespace="org.awen.entity.personMapper">
<!-- 后续通过namespace:id -->
<!-- resultType:查询返回结果值得类型,返回类型 -->
<select id="selectBlog" resultType="org.awen.entity.Person" parameterType="int">
<!--sql语句-->
select * from person where id = #{id}
</select>
</mapper>
在src中建立一个config.xml,需要注意的点,在代码中已经声明过了。仔细观看就可以了。
<!-- 可以再次新建一个environment default="test"
environment 的id 来指定Mybatis的运行时的数据库环境-->
<environments default="development">
<!-- 开发环境(自己的计算机) -->
<environment id="development">
<!-- 事务的提交方式:
JDBC:利用JDBC方式处理事务(commit roolback close)
MANAGED:将事务交由 其他组件去托管(spring,jobss),默认 会关闭连接
-->
<transactionManager type="JDBC"/>
<!-- 数据源类型:
UNPOOLED:传统的JDBC模式(每次访问数据库,均 需要 打开,关闭等数据库操作 ,但是打开,关闭数据库是非常麻烦的,比较消耗性能)
POOLED:使用数据库连接池,也就是说可以进行并发操作,只需要在 最后(也就是说不用的时候关闭上就可以了)
JNDI:从tomcat中获取一个内置的数据库连接池
-->
<dataSource type="POOLED">
<!-- 配置数据信息 -->
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName =Employees"/>
<property name="username" value="sa"/>
<property name="password" value="1228"/>
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 配置数据信息 -->
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName =Employees"/>
<property name="username" value="sa"/>
<property name="password" value="1228"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载映射文件 -->
<mapper resource="org/awen/entity/studentMapper.xml"/>
</mappers>
</configuration>
在包中创建一个test的java文件
public static void queryStudenyByStuno() throws IOException {
// TODO 自动生成的方法存根
//加载Mybatis配置文件
//Connection -SqlSession操作Mybatis
//conf.xml->reader
Reader reader =Resources.getResourceAsReader("conf.xml");
//reader -SqlSession
SqlSessionFactory sessionFacotory=new SqlSessionFactoryBuilder().build(reader);
SqlSession session=sessionFacotory.openSession();
String statement="org.awen.entity.studentMapper.queryStudenyByStuno";
Student student=session.selectOne(statement,1);
System.out.println(student);
session.close();
}
需要注意的一点是,Mapper文件中的ID对应的是
String statement=“org.awen.entity.studentMapper.”+“queryStudenyByStuno”;
加号后面的东西。