zoukankan      html  css  js  c++  java
  • Java MyBatis3(2) Mapper代理的开发方式

    Mapper代理的开发规范

    1、 mapper接口的全限定名要和mapper映射文件的namespace值一致。

    2、 mapper接口的方法名称要和mapper映射文件的statementid一致

    3、 mapper接口的方法参数类型要和mapper映射文件的statementparameterType的值一致,而且它的参数是一个。

    4、 mapper接口的方法返回值类型要和mapper映射文件的statementresultType的值一致

    代码实战

    1.搭建如下工程

     2.mapper接口——interface UserMapper

    package com.mf.mybatis.mapper;
    
    import java.util.List;
    
    import com.mf.mybatis.po.User;
    import com.mf.mybatis.po.UserQueryVO;
    
    public interface UserMapper {
    
        public User findUserById(int id) throws Exception;
    
    
        public void insertUser(User user) throws Exception;
        
    
        public List<User> findUserList(UserQueryVO vo);
        
    
        public int findUserCount(UserQueryVO vo);
        
    
        public User findUserRstMap(int id);
    }

    3.mapper映射文件——SqlMapConfig.xml

    <?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">
            <property name="db.username" value="123" />
        </properties>
    
        <typeAliases>
        <typeAlias type="com.mf.mybatis.po.User" alias="user"/>
            <package name="com.mf.mybatis.po" />
        </typeAliases>
    
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"></transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="${db.driver}" />
                    <property name="url" value="${db.url}" />
                    <property name="username" value="${db.username}" />
                    <property name="password" value="${db.password}" />
                </dataSource>
            </environment>
        </environments>
    
    
        <mappers>
           <!--<mapper resource="mapper/UserMapper.xml" /> -->
           <package name="com.mf.mybatis.mapper" />
        </mappers>
        
    </configuration>

    4.Db.properties

    db.driver=com.mysql.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
    db.username=root
    db.password=root

    5.log4j.properties

    # Global logging configuration
    log4j.rootLogger=DEBUG, stdout
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    6.UserMapper.xml

    <?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.mf.mybatis.mapper.UserMapper">
    
        <select id="findUserById" parameterType="int" resultType="User">
            SELECT * FROM USER WHERE id =#{id}
        </select>
    
        <insert id="insertUser" parameterType="com.mf.mybatis.po.User">
            <selectKey keyProperty="id" resultType="int" order="AFTER">
                SELECT LAST_INSERT_ID()
            </selectKey>
            INSERT INTO USER(username,birthday,sex,address) VALUES(#{username},#{birthday},#{sex},#{address})
        </insert>
    
        <sql id="whereClause">
            <if test="user != null">
                <if test="user.username != null and user.username != ''">
                    AND username LIKE '%${user.username}%'
                </if>
                <if test="user.sex != null and user.sex != ''">
                    AND sex = #{user.sex}
                </if>
            </if>
    
            <if test="idList != null">
                AND id IN
                <foreach collection="idList" item="id" open="(" close=")" separator=",">
                    #{id}
                </foreach>
            </if>
        </sql>
    
    
        <select id="findUserList" parameterType="com.mf.mybatis.po.UserQueryVO"    resultType="user">
            SELECT * FROM user
            <where>
                <include refid="whereClause" />
            </where>
        </select>
    
        <select id="findUserCount" parameterType="com.mf.mybatis.po.UserQueryVO" resultType="int">
            SELECT count(*) FROM user
            <where>
                <include refid="whereClause" />
            </where>
        </select>
    
        <resultMap type="user" id="UserRstMap">
            <id column="id_" property="id" />
            <result column="username_" property="username" />
            <result column="sex_" property="sex" />
        </resultMap>
    
        <select id="findUserRstMap" parameterType="int" resultMap="UserRstMap">
            Select id id_,username username_,sex sex_ from user where id = #{id}
        </select>
    </mapper>

    7.UserQueryVO.java

    package com.mf.mybatis.po;
    
    import java.util.List;
    
    
    public class UserQueryVO {
    
    
        private User user;
        
    
        private List<Integer> idList;
        
    
        public List<Integer> getIdList() {
            return idList;
        }
    
        public void setIdList(List<Integer> idList) {
            this.idList = idList;
        }
    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    }

    8.UserMapperTest.java

    package com.mf.mybatis.mapper;
    
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Before;
    import org.junit.Test;
    
    import com.mf.mybatis.po.User;
    import com.mf.mybatis.po.UserQueryVO;
    
    public class UserMapperTest {
    
        private SqlSessionFactory sqlSessionFactory;
    
        @Before
        public void setUp() throws Exception {
            String resource = "SqlMapConfig.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }
    
        @Test
        public void testFindUserById() throws Exception {
    
            SqlSession sqlSession = sqlSessionFactory.openSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            User user = mapper.findUserById(1);
            System.out.println(user);
            sqlSession.close();
    
        }
    
        @Test
        public void testInsertUser() throws Exception {
    
            SqlSession sqlSession = sqlSessionFactory.openSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            User user = new User();
            user.setUsername("sgz");
            user.setAddress("北京");
            mapper.insertUser(user);
            System.out.println(user.getId());
            sqlSession.commit();
            sqlSession.close();
    
        }
    
        @Test
        public void testFindUserList() throws Exception {
    
            SqlSession sqlSession = sqlSessionFactory.openSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            UserQueryVO vo = new UserQueryVO();
            // User user= new User();
            // user.setUsername("沐风");
            // user.setSex("1");
            // vo.setUser(user);
            List<Integer> idList = new ArrayList<>();
            idList.add(1);
            idList.add(2);
            idList.add(10);
            vo.setIdList(idList);
            
            List<User> list = mapper.findUserList(vo);
            int count = mapper.findUserCount(vo);
    
            System.out.println(list);
            System.out.println(count);
            sqlSession.close();
        }
    
        @Test
        public void testFindUserRstMap() throws Exception {
    
            SqlSession sqlSession = sqlSessionFactory.openSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
            User user = mapper.findUserRstMap(1);
            System.out.println(user);
            sqlSession.close();
        }
    
    }

     

  • 相关阅读:
    POJ 1611 The Suspects
    POJ 2001 Shortest Prefixes(字典树)
    HDU 1251 统计难题(字典树 裸题 链表做法)
    G++ C++之区别
    PAT 乙级 1013. 数素数 (20)
    PAT 乙级 1012. 数字分类 (20)
    PAT 乙级 1009. 说反话 (20)
    PAT 乙级 1008. 数组元素循环右移问题 (20)
    HDU 6063 17多校3 RXD and math(暴力打表题)
    HDU 6066 17多校3 RXD's date(超水题)
  • 原文地址:https://www.cnblogs.com/cnki/p/6516762.html
Copyright © 2011-2022 走看看