MyBatis和ibatis我现在只知道配置文件有点不同,读取配置文件的类不同。下面给出配置文件。
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--mybatis3.0 和ibatis配置文件有点不同--> <configuration> <properties resource="jdbc.properties" /> <environments default="tayfer"> <environment id="tayfer"> <!-- 数据源 --> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="Person.xml" /> </mappers> </configuration>
配置文件的头是mybatis3.0哦。<properties resource="jdbc.properties" />这里指定了prooerties文件位置,不用可以直接把JDBC信息写在里面。
<?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"> <!--<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> --> <!--配置mapper映射--> <mapper namespace="com.tuojin.mybatis.mapper.StuMapper"> <!--<resultMap type="com.struts.test.Person" id="person"> <id property="id" column="d" javaType="int" jdbcType="INTEGER" /> <result property="name" column="name" javaType="String" jdbcType="VARCHAR" /> </resultMap> --> <select id="selectperson" parameterType="int" resultType="com.struts.test.Person"> select * from person where id=#{a} </select> <select id="selectall" resultType="com.struts.test.Person"> select * from person </select> <insert id="insertperson" parameterType="com.struts.test.Person"> insert into person(id,name) values (#{id},#{name}) </insert> <update id="updateperson" parameterType="com.struts.test.Person"> update person set name=#{name} where id=#{id} </update> <delete id="deleteperson" parameterType="int"> delete from person where id=#{id} </delete> </mapper>
这2个XML的头文件时不一样的。可以不用配置resultMap,直接用resultType。不管是查出来的是单条记录还是多天记录都可以直接用parameterType="com.struts.test.Person"。我还发现#{}这里面的参数可以是任意的。与参数无关,那他映射关系就不是根据{}里面的值确定的,空值的话就不行了。很奇怪很不解。package com.struts.test;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class PersonImpl {
public static SqlSession getSession(){
SqlSession session=null;
try {
Reader reader=Resources.getResourceAsReader("configuration.xml");
SqlSessionFactory sqlmapper=new SqlSessionFactoryBuilder().build(reader);
session=sqlmapper.openSession();
} catch (IOException e) {
e.printStackTrace();
}
return session;
}
public static void main(String[] args){
SqlSession session=PersonImpl.getSession();
/*List<Person> person=(ArrayList<Person>)session.selectList("selectall");
for(Person p:person)
System.out.print(p);*/
/* Person p1=new Person();
p1.setId(4);
p1.setName("hongbin");
session.insert("insertperson",p1);
session.commit();*/
/*Person p1=new Person();
p1.setId(2);
p1.setName("hongbin");
session.update("updateperson", p1);
session.commit();*/
/* session.delete("deleteperson", 2);
session.commit();*/
Person person=(Person)session.selectOne("selectperson", 1);
System.out.print(person);
}
}
这些就是实现方法了;简单的单表查询。继续学习中........