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

来源:互联网 发布:登陆淘宝显示网络崩溃 编辑:程序博客网 时间:2024/06/05 05:16

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.Driverjdbc.url=jdbc:mysql://localhost:3306/MyBatis?useUnicode=true&amp;characterEncoding=UTF8jdbc.username=rootjdbc.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);        }    }