myBatins框架我们有时也叫sqlBatins,因为我可以灵活去写sql语句,而不像HIberante我们只能用Hql语句去写
.每个一个框架搭建就都要我们去搭建配置环境
1.首先我们的导入相应的JAR包
2.我配置mybatis-config.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>
<typeAlias alias="myHouse" type="entity.House"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="username" value="yun3151"/>
<property name="password" value="yun3151"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="dao/HouseDaoMapper.xml"/>
<mapper resource="dao/UserDaoMapper.xml"/>
</mappers>
</configuration>
3写你要查询的表,我以后我数据库里面house为例
首先你要写一个House实体
package entity;
import java.io.Serializable;
public class House implements Serializable {
private int id;
private int user_id;
private int type_id;
private String title;
private int price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getUser_id() {
return user_id;
}
public void setUser_id(int userId) {
user_id = userId;
}
public int getType_id() {
return type_id;
}
public void setType_id(int typeId) {
type_id = typeId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
4.我们写一个接口里面定义我要的方法
package dao;
import java.util.List;
import entity.House;
public interface IHouseDao {
int countAll();
House queryByHouseid(int id);
}
5.我们要写一个对应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="dao.IHouseDao">
<select id="countAll" resultType="int">
<!-- 这里的SQL结尾不能加分号,否则报"ORA-00911错误" -->
SELECT count(*) FROM house
</select>
<select id="queryByHouseid" parameterType="Integer" resultMap="houseMap">
<!-- 这里的SQL结尾不能加分号,否则报"ORA-00911错误" -->
SELECT * FROM house where id=#{id}
</select>
</mapper>
6.我们要写一个类去实现刚才定义的接口
package daoImpl;
import java.io.Reader;
import javax.annotation.Resource;
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 dao.IHouseDao;
import entity.House;
public class HouseDaoImpl implements IHouseDao {
@Override
public int countAll() {
String resource="mybatis-config.xml";
Reader reader=null;
SqlSessionFactory factory=null;
SqlSession session=null;
int count=-1;
try{
reader=Resources.getResourceAsReader(resource);
factory=new SqlSessionFactoryBuilder().build(reader);
session=factory.openSession();
count=session.selectOne("dao.IHouseDao.countAll");
}catch(Exception ex){
ex.printStackTrace();
}finally{
if(session!=null){
session.close();
}
}
return count;
}
@Override
public House queryByHouseid(int id) {
String resource="mybatis-config.xml";
Reader reader=null;
SqlSessionFactory factory=null;
SqlSession session=null;
House house=null;
try{
reader=Resources.getResourceAsReader(resource);
factory=new SqlSessionFactoryBuilder().build(reader);
session=factory.openSession();
house=session.selectOne("dao.IHouseDao.queryByHouseid",id);
}catch(Exception ex){
ex.printStackTrace();
}finally{
if(session!=null){
session.close();
}
}
return house;
}
}
5我们测试是否成功
package test;
import dao.*;
import daoImpl.*;
import entity.House;
public class TestHouse {
public static void main(String[] args) {
IHouseDao house=new HouseDaoImpl();
/* if(house.countAll()>0){
System.out.println(house.countAll());
}else{
System.out.println("数据异常");
}*/
House house1= house.queryByHouseid(2);
if(house1!=null){
System.out.println(house1.getId());
System.out.println(house1.getPrice());
System.out.println(house1.getTitle());
System.out.println(house1.getType_id());
System.out.println(house1.getUser_id());
}else{
System.out.println("数据异常");
}
}
}