MyBatis中映射文件的输入映射为pojo包装类型

MyBatis中映射文件的输入映射为pojo包装类型
自定义pojo类(User.java)

package com.hl.myabtis.first.beas;

import java.util.Date;

public class User {

    private int id;
    private String username;
    private char sex;
    private Date birthday;
    private String address;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public char getSex() {
        return sex;
    }
    public void setSex(char sex) {
        this.sex = sex;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", sex=" + sex
                + ", birthday=" + birthday + ", address=" + address + "]";
    }

}

自定义pojo类的增强类(UserCustomer .java)

package com.hl.myabtis.first.beas;

/**
 *  用户增强类
 * @author 浪丶荡
 *
 */
public class UserCustomer extends User{
    //可以扩展用户类
}

用于综合查询的包装类(UserQueryVo .java)

package com.hl.myabtis.first.beas;

/**
 *  查询用户包装类型
 * @author 浪丶荡
 *
 */
public class UserQueryVo extends User{
    //包装用户类增强类
    private UserCustomer userCustomer;
    //还可以包装其他的(订但、商品等)


    public UserCustomer getUserCustomer() {
        return userCustomer;
    }

    public void setUserCustomer(UserCustomer userCustomer) {
        this.userCustomer = userCustomer;
    }
}

Mapper接口(UserMapper.java)

package com.hl.mybatis.first.mapper;


import java.util.List;

import com.hl.myabtis.first.beas.User;
import com.hl.myabtis.first.beas.UserCustomer;
import com.hl.myabtis.first.beas.UserQueryVo;

public interface UserMapper {

    //根据id查询用户信息
    public User findUserById(int id) throws Exception;
    //添加用户信息
    public void insertUser(User user);
    //根据id删除用户
    public void deleteUser(int id);
    //根据用户姓名模糊查找
    public List<User> findUserByName(String name);
    //用户信息的综合查询
    public List<UserCustomer> fingUserList(UserQueryVo userQueryVo) throws Exception;
}

mapper.xml映射文件

<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 对sql进行分开处理,隔离 -->
<mapper namespace="com.hl.mybatis.first.mapper.UserMapper">
    <!-- 执行数据库的查询 ID用来标识次sql语句,称为Statement的ID  
        #{}表示一个占位符
        parameterType指定输入参数类型
        id:接收参数名叫id,如果参数为简单类型,参数名随意
        resultType:输出结果的类型,单条记录所映射的对象类。
    -->
    <select id="findUserById" parameterType="int" resultType="user">
        select * FROM user WHERE id = #{id}
    </select>
    <!--${value}表示sql拼接串  -->
    <select id="findUserByName" parameterType="String" resultType="user">
        select * FROM user WHERE address LIKE '%${value}%'
    </select>
    <!-- 用户信息的综合查询
        查询条件很复杂
     -->
    <select id="fingUserList" parameterType="com.hl.myabtis.first.beas.UserQueryVo" resultType="com.hl.myabtis.first.beas.UserCustomer">
        select * from user where user.sex=#{userCustomer.sex} or user.address like '$%{userCustomer.address}%'
    </select>


    <!-- 添加用户 
        SELECT_LAST_INSERT_ID()只适用于自增长情况
        keyProperty:将查询到的结果设置到parameterType指定的属性
        order:执行顺序,在插入后执行
        resultType:结果类型
    -->
    <insert id="insertUser" parameterType="user">
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
        SELECT LAST_INSERT_ID()
    </selectKey>
        insert into user (username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
    </insert>
    <!-- 删除 
        parameterType:参数类型
    -->
    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from user where id = #{value}
    </delete>
    <!-- 更新
        需求:根据ID更新用户信息
        parameterType:需要更新的用户信息
        #{id}:从输入的user对象中获取ID属性,名称需要和属性名一致
     -->
     <update id="updateUserByID" parameterType="user">
        update user set username = #{username},birthday = #{birthday},sex = #{sex},address = #{address} where id = #{id}
     </update>
</mapper>

全局配置文件

<?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>
    <!-- 加载属性文件 -->
    <properties resource="db.properties" />
    <!--
     全局配置 
    <settings>
    </settings> -->
    <!-- 别名 -->
    <typeAliases>
        <!-- 单个定义别名 
        <typeAlias type="com.hl.myabtis.first.beas.User" alias="user"/>
        -->
        <!-- 批量定义别名
            指定包名,MyBatis会自动扫描包内类,自动定义别名,别名就是类名,首字母不区分大小写
         -->
        <package name="com.hl.myabtis.first.beas"/>
    </typeAliases>

  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
      </dataSource>
    </environment>
  </environments>
  <!-- 加载映射文件 -->
  <mappers>
    <mapper resource="sqlmap/user.xml"/>
    <mapper class="com.hl.mybatis.first.mapper.UserMapper"/>
  </mappers>
</configuration>

db参数:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/MyBatis?useUnicode=true&amp;characterEncoding=UTF8
jdbc.username=root
jdbc.password=123456

测试类:

@Test
    public void testfindUserList() throws Exception{
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper usermapper = sqlSession.getMapper(UserMapper.class);
        //构建一个包装类
        UserQueryVo userQueryVo = new UserQueryVo();
        //构建一个增强类
        UserCustomer userCustomer = new UserCustomer();
        userCustomer.setAddress("明月");
        userCustomer.setSex('1');
        //包装类包装这增强类作为查询条件
        userQueryVo.setUserCustomer(userCustomer);


        List<UserCustomer> userList = usermapper.fingUserList(userQueryVo);
        sqlSession.close();
        for (UserCustomer user : userList) {
            System.out.println(user);
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值