版权声明:西安钰泉私人知识产权,仅供学习交流使用! https://blog.csdn.net/YuQuanZhang/article/details/81570034
Map获取数据库的值
Map获取数据库数据的形式采用键值对的形式,key为字段名,value为表中的数据。放入map对象后,接下来将Map对象中的数据到对应的实体对象中。
在映射的过程中,将结果接收为map类型,其中oracle数据库会将字段名变为大写形式
好处是不用在赋值实体类了,但是不方便 data.get("大写字段名")才能获得map表中的字段值
Map接收参数 优缺点 优点:只需要接收Map类型的键值对,不需要实体类。缺点:在调用属性值的时候需要调用get方法。
<select id="MapReturnQueryOne" parameterType="int" resultType="map">
SELECT * FROM PERSON WHERE pid=#{pid}
</select>
如何解决表中字段名和实体类的属性不一致的情况
1,使用sql语句别名
<select id="queryEmp" parameterType="int" resultType="com.it.entity.Emp">
SELECT PID AS empNo,PNAME AS empName,PWD FROM PERSON WHERE PID=#{ADAD}
</select>
2,<resultMap type="" id="PersonResultMap">
</resultMap>
只需要将不一致的名称列出来即可
<resultMap type="com.it.entity.Emp" id="PersonResultMap">
<result property="empNo" column="pid"/>
<result property="empName" column="pname"/>
</resultMap>
<select id="queryEmpAll" resultMap="PersonResultMap" parameterType="int">
SELECT * FROM PERSON WHERE pid=#{ID}
</select>
Mapping映射器
是一个实现映射的接口,MyBatis会根据你调用的方法,自动实现可以和接口耦合的持久层操作方法。
session.getMapper(PersonDao.class);
public interface PersonDao {
public void save(Person e);
public List<Person> queryAll();
public Person queryOne(int id);
public void delete(int id);
public void update(Person a);
//Map接收参数 优缺点 优点:只需要接收Map类型的键值对,不需要实体类。缺点:在调用属性值的时候需要调用get方法。
public Map MapReturnQueryOne(int id);
//对不同属性名的别名处理
public Person queryEmp(int id);
//对不同属性名的ResultMap方法处理
/*public resultMap queryEmpAll(int id); */
}
Test.java
package Test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.it.dao.PersonDao;
import com.it.entity.Person;
public class Test {
private static SqlSession session;
public static SqlSession init() {
String config="SqlMapConfig.xml";
SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
SqlSessionFactory ssf=ssfb.build(TestCase.class.getClassLoader().getResourceAsStream(config));
return session=ssf.openSession();
}
public static void insert() {
SqlSession session=init();
PersonDao dao=session.getMapper(PersonDao.class);//这里会返回一个符合Mapper映射器要求的对象
Person e=new Person();
e.setPname("2456764");
e.setPwd("qeqe");
dao.save(e);
System.out.println(e.getPname());
System.out.println(e.getPwd());
System.out.println("通过映射器Mapper插入成功");
session.commit();
session.close();
}
public static void queryAll(){
SqlSession session=init();
PersonDao dao=session.getMapper(PersonDao.class);
List<Person> list=dao.queryAll();
for(Person a:list) {
System.out.println(a);
}
session.close();
}
public static void queryById() {
SqlSession session=init();
PersonDao dao=session.getMapper(PersonDao.class);
Person a=dao.queryOne(6);
System.out.println(a);
session.close();
}
public static void delete() {
SqlSession session=init();
PersonDao dao=session.getMapper(PersonDao.class);
dao.delete(12);
session.commit();
System.out.println("删除成功");
session.close();
}
public static void update() {
SqlSession session=init();
PersonDao dao=session.getMapper(PersonDao.class);
Person a=new Person();
a.setPid(45);
a.setPname("aaa");
a.setPwd("123456");
dao.update(a);
session.commit();
System.out.println("更新成功");
session.close();
}
}