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>