MyBatis框架 用Map获得数据库的值 如何解决属性不同的问题 Mapping映射器的应用

版权声明:西安钰泉私人知识产权,仅供学习交流使用! 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();
     }
}

猜你喜欢

转载自blog.csdn.net/YuQuanZhang/article/details/81570034