1.数据库准备:
1)创建数据库:
CREATE DATABASE DB_MYBATIS CHAR SET UTF8;
USE DB_MYBATIS;
2)创建表单:
CREATE TABLE TB_PERSON(
id INT PRIMARY KEY,
name VARCHAR(32),
country VARCHAR(60),
address VARCHAR(60)
);
3)插入条目:
INSERT INTO tb_person VALUES (1,"Michael","USA", "Holliday");
INSERT INTO tb_person VALUES (2,"Michael2","USA2","Holliday2");
2.使用MyEclipse创建web项目:
1)导入jar包:
2)创建JavaBean:
package cn.cvu.domain;
public class BeanPerson {
private Integer id;
private String name;
private String country;
private String address;
public Integer getId() {...}
public void setId(Integer id) {...}
public String getName() {...}
public void setName(String name) {...}
public String getCountry() {...}
public void setCountry(String country) {...}
public String getAddress() {...}
public void setAddress(String address) {...}
public BeanPerson() {
}
public BeanPerson(Integer id, String name, String country, String address) {
this.id = id;
this.name = name;
this.country = country;
this.address = address;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", country=" + country
+ ", address=" + address + "]";
}
}
3)配置JavaBean映射文件:
此文件和JavaBean放在同一目录下,且名称相同。
<?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 namespace="cn.cvu.mybatis.query">
<!-- 查询 id=“自定义的方法名”
paramenterType=“要操作的列的数据类型”
resultType=“对应的表单” -->
<select id="selectPersonByID" parameterType="int" resultType="tb_person">
<!-- 查询语句。#{id}为参数,id不是固定的写法-->
select * from tb_person where id = #{id}
</select>
<select id="selectPersonByName" parameterType="String" resultType="tb_person">
select * from tb_person where name = #{name}
</select>
</mapper>
4)配置Mybatis的Configuration.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>
<typeAliases>
<!-- alias=“JavaBean映射文件返回的对应的表单名称” type=“JavaBean全名” -->
<typeAlias alias="tb_person" type="cn.cvu.domain.BeanPerson" />
</typeAliases>
<!-- 环境 default=“开发环境” -->
<environments default="development">
<environment id="development">
<!-- 连接类型 type=“JDBC” -->
<transactionManager type="JDBC" />
<!-- 数据源 type=“连接池” -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/db_mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 映射资源 resource=“JavaBean配置文件” -->
<mapper resource="cn/cvu/domain/BeanPerson.xml" />
</mappers>
</configuration>
5)测试:
package cn.cvu.test;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import cn.cvu.domain.BeanPerson;
public class TestMybatis {
/**
* 每次查询一条数据
* @throws Exception
*/
@Test
public void testQueryOne() throws Exception {
//1。 创建读取器。读取器=Mybatis资源.得到资源读取器(Mybatis配置文件)
Reader reader = Resources.getResourceAsReader("Configuration.xml");
//2。创建SQL会话工厂。SQL会话工厂=new SQL会话工厂建造器().创建(读取器)
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
//3。 创建SQL会话。SQL会话=SQL会话工厂.打开会话
SqlSession session = sqlSessionFactory.openSession();
//4。 查询。返回JavaBean=SQL会话.查询一条(BeanPerson.xml中定义的操作集命名空间.操作,参数)
BeanPerson person = (BeanPerson) session.selectOne("cn.cvu.mybatis.query.selectPersonByID", 1);
System.out.println("ID:" + person.getId());
System.out.println("姓名:" + person.getName());
System.out.println("国家:" + person.getCountry());
System.out.println("地址:" + person.getAddress());
//------------------------------------------------------------
person = (BeanPerson) session.selectOne("cn.cvu.mybatis.query.selectPersonByName", "Michael2");
System.out.println("\nID:" + person.getId());
System.out.println("姓名:" + person.getName());
System.out.println("国家:" + person.getCountry());
System.out.println("地址:" + person.getAddress());
session.close();
}
}
3.使用接口编程:
1)编写接口:
package cn.cvu.service;
importcn.cvu.domain.BeanPerson;
//接口,定义操作
public interfaceIOperationBean {
//使用ID查询
public BeanPersonselectPersonByID(Integer id);
//使用name查询
public BeanPersonselectPersonByName(String name);
}
2)修改BeanPerson.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 namespace="cn.cvu.service.IOperationBean">
<!-- 查询 id=“IoperationBean接口中的方法名”
paramenterType=“要操作的列的数据类型”
resultType=“对应的表单” -->
<select id="selectPersonByID" parameterType="int" resultType="tb_person">
<!-- 查询语句。#{id}为接口中selectPersonByID方法的参数-->
select * from tb_person where id = #{id}
</select>
<select id="selectPersonByName" parameterType="String" resultType="tb_person">
<!-- 查询语句。#{name}为接口中selectPersonByName方法的参数-->
select * from tb_person where name = #{name}
</select>
</mapper>
3)测试:
package cn.cvu.test;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import cn.cvu.domain.BeanPerson;
import cn.cvu.service.IOperationBean;
public class TestMybatis {
/**
* 每次查询一条数据
* @throws Exception
*/
@Test
public void testQueryOne() throws Exception {
//1。创建读取器。读取器=Mybatis资源.得到资源读取器(Mybatis配置文件)
Reader reader = Resources.getResourceAsReader("Configuration.xml");
//2。创建SQL会话工厂。SQL会话工厂=new SQL会话工厂建造器().创建(读取器)
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
//3。创建SQL会话。SQL会话=SQL会话工厂.打开会话
SqlSession session = sqlSessionFactory.openSession();
//4。创建接口。接口=SQL会话.得到映射(接口.class)
IOperationBean operationBean = session.getMapper(IOperationBean.class);
//5。查询。返回JavaBean=接口.使用ID查询(Integer)
BeanPerson person = operationBean.selectPersonByID(1);
System.out.println("ID:" + person.getId());
System.out.println("姓名:" +person.getName());
//-----------------------------------------------------------------
//查询。返回JavaBean=接口.使用name查询(String)
person = operationBean.selectPersonByName("Michael2");
System.out.println("\nID:" + person.getId());
System.out.println("姓名:" +person.getName());
session.close();
}
}
- end