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();
        }
    
    }

     

  • 相关阅读:
    批处理学习总结
    深搜广搜
    罗塔的一篇回忆埃尔德什的文字
    一个有意思的东西(挖坑)
    人格风骨出尘俗 道德文章传后人(转载)
    2015年数学日历
    一道关于将弧翻折的问题
    努力要做的是理解,而不是死记硬背
    在博客中使用align*环境
    测试TeX代码的网址
  • 原文地址:https://www.cnblogs.com/cnki/p/6516762.html
Copyright © 2011-2022 走看看