Mybatis输入映射、输出映射和resultMap

POJO是什么?
  • POJO是Plain OrdinaryJava Object的缩写,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。
  • 简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。
POJO的特点

POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。POJO类也给我们在struts框架中的配置带来了很大的方便。

输入映射和输出映射

目录结构
在这里插入图片描述
数据库数据
在这里插入图片描述
bean类(User.java)

package com.java.pojo;

public class User {

	private Integer id;
	private String username;// 用户姓名
	private String password;// 性别
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
	}
	
}

pojo类(QueryVo .java)

下面的User是bean类的User用户

package com.java.pojo;

public class QueryVo {
	private User user;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
}

新增接口方法(UserMapper .java)

package com.java.mapper;

import java.util.List;

import com.java.pojo.QueryVo;
import com.java.pojo.User;

public interface UserMapper {
	
	List<User> getUserByQueryVo(QueryVo vo);
}

sql映射文件(UserMapper.xml命名最好与新增接口的命名一样)

  • 1、namespace必须是接口的全路径名
  • 2、接口的方法名必须与sql的id一致
  • 3、resultType是User.java的路径
  • 4、user.username的user是QueryVo .java里面的user
<?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="com.java.mapper.UserMapper" >
    
    <select id="getUserByQueryVo" resultType="com.java.pojo.User">
	    <!-- ${}:字符串拼接指令,如果入参为普通数据类型,括号里面只能写value -->
	    select id,username,password from stus where username like '%${user.username}%'
    </select>
    
</mapper>

配置文件(SqlMapConfig.xml)

package name="com.java.mapper"里的name是接口与映射文件的包名

<?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>

<!-- default 引用 environment 的 id,当前所使用的环境 -->
    <environments default="default">
<!-- 声明可以使用的环境 ,环境可以有多个(当连接不同数据库的时候)-->
    <environment id="default">
<!-- 使用原生 JDBC 事务 -->
        <transactionManager type="JDBC"></transactionManager>
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/php?useSSL=false"/>
            <property name="username" value="root"/>
            <property name="password" value="abc123456"/>
        </dataSource>
    </environment>
    </environments>
    
	<mappers>
		<!-- 映射文件包扫描,推荐方式 
			 1、接口文件必须与映射文件在同一目录下
			 2、接口文件名称必须与映射文件的名称一致-->
		<package name="com.java.mapper"/>
	</mappers>
</configuration>

测试类(MapperUserTest .java)

package com.java.text;

import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.java.mapper.UserMapper;
import com.java.pojo.QueryVo;
import com.java.pojo.User;
import com.java.utils.MybatisUtils;

public class MapperUserTest {
	
	public void testgetIserByQueryVo() {
		SqlSession session = MybatisUtils.getSqlSessionFactory().openSession();
		//获取接口的代理实现类
		UserMapper userMapping = session.getMapper(UserMapper.class);
		QueryVo queryVo = new QueryVo();
		User user = new User();
		user.setUsername("王");
		queryVo.setUser(user);
		List<User> list = userMapping.getUserByQueryVo(queryVo);
		for (User user2 : list) {
			System.out.println(user2);
		}
		session.close();
	}
	
	
	public static void main(String[] args) {
		MapperUserTest demo = new MapperUserTest();
		demo.testgetIserByQueryVo();
	}
}

resultMap的使用方法

namespace必须是接口与SQL映射文件的路径一致
select里面的id必须与接口中的方法名字一致

<?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">

	<!-- 
		动态代理开发规则
		1、namespace必须是接口的全路径名
		2、接口的方法名必须与sql的id一致
		3、接口的入参必须与parameterType类型一致
		4、接口的返回值必须与resultType一致
	 -->

<mapper namespace="com.java.mapper.OrderMapper" >
    
    
    <!-- resultMap的入门 :定义-->
    <resultMap type="com.java.pojo.User" id="user_list_map">
    	<!-- <id>用于映射主键 -->
    	<id property="id" column="id" />
    	<!-- 普通字段用result映射 
    		 1、property是自己定义的
    		 2、column是数据库的字段-->
    	<result property="username" column="username" />
    	<result property="password" column="passowrd" />
    </resultMap>
    <!-- 使用resultMap 
	 resultMap引用的是上面的resultMap的id-->
     <select id="getOrderListMap" resultMap="user_list_map">
    	select id,username,password from stus
    </select>
    
</mapper>

猜你喜欢

转载自blog.csdn.net/Woo_home/article/details/89482335