zoukankan      html  css  js  c++  java
  • MyBatis 学习

    首先,POJO

    /**
     * @Title: Question.java
     * @Package com.test.model
     * @Description: TODO(POJO Question)
     * Copyright: Copyright (c) 2012 Company China Foreign Exchange Trade System and National Interbank Funding Center.
     * Building 24,1387 ZhangDong Road, Shanghai, China.
     * All Rights Reserved. 
     * Company: Insigma HT
     * @author Ares
     * @date 2013-06-24 下午3:48:31
     *
     * Revision History
     *
     * Date            Programmer              Notes
     * ---------    ---------------------  --------------------------------------------
     * 2013-06-24         Ares                    initial
     */
    package com.test.model;
    
    import java.util.Date;
    
    /** 
     * 
     * @author Ares
     * @Describe TODO(POJO Question)
     * 
     */
    public class Question {
    
        private String id;
        private int qorder;
        private String qname;
        private String qcontent;
        private Date updateTime;
        
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public int getQorder() {
            return qorder;
        }
        public void setQorder(int qorder) {
            this.qorder = qorder;
        }
        public String getQname() {
            return qname;
        }
        public void setQname(String qname) {
            this.qname = qname;
        }
        public String getQcontent() {
            return qcontent;
        }
        public void setQcontent(String qcontent) {
            this.qcontent = qcontent;
        }
        public Date getUpdateTime() {
            return updateTime;
        }
        public void setUpdateTime(Date updateTime) {
            this.updateTime = updateTime;
        }
        
    }

    继续,Mapper

    /**
     * @Title: QuestionDAO.java
     * @Package com.test.dao
     * @Description: TODO(Question Mapper)
     * Copyright: Copyright (c) 2012 Company China Foreign Exchange Trade System and National Interbank Funding Center.
     * Building 24,1387 ZhangDong Road, Shanghai, China.
     * All Rights Reserved. 
     * Company: Insigma HT
     * @author Ares
     * @date 2013-06-24 下午3:48:31
     *
     * Revision History
     *
     * Date            Programmer              Notes
     * ---------    ---------------------  --------------------------------------------
     * 2013-06-24         Ares                    initial
     */
    package com.test.dao;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.InsertProvider;
    import org.apache.ibatis.annotations.Param;
    import org.apache.ibatis.annotations.Select;
    
    import com.test.model.Question;
    
    /** 
     * 
     * @author Ares
     * @Describe TODO(Question Mapper)
     * 
     */
    public interface QuestionDAO {
        
        /**
         * AddBy Ares
         * TODO(find all questions)
         */
        @Select("SELECT * FROM Question")
        public List<Question> findAll();
        
        /**
         * AddBy Ares
         * TODO(find question by ID)
         */
        @Select("SELECT * FROM Question WHERE ID = #{id}")
        public Question findByID(@Param("id")String id);
        
        /**
         * AddBy Ares
         * TODO(just save one question)
         */
        @Insert("INSERT INTO Question VALUES(#{id},#{qorder},#{qname},#{qcontent},#{updateTime})")
        public void save(Question question);
        
        /**
         * AddBy Ares
         * TODO(save all questions in list)
         */
        @InsertProvider(type=SqlProvider.class, method="saveAll")
        public void saveAll(List<Question> list);
        
    }

    上面的Mapper中,saveAll方法使用了SqlProvider,这个是用作批量添加使用的。

    /**
     * @Title: SqlProvider.java
     * @Package com.test.dao
     * @Description: TODO(SqlProvider)
     * Copyright: Copyright (c) 2012 Company China Foreign Exchange Trade System and National Interbank Funding Center.
     * Building 24,1387 ZhangDong Road, Shanghai, China.
     * All Rights Reserved. 
     * Company: Insigma HT
     * @author Ares
     * @date 2013-6-24 下午3:48:31
     *
     * Revision History
     *
     * Date            Programmer              Notes
     * ---------    ---------------------  --------------------------------------------
     * 2013-6-24       Ares                    initial
     */
    package com.test.dao;
    
    import java.text.MessageFormat;
    import java.util.List;
    import java.util.Map;
    
    import com.test.model.Question;
    
    /**
     * @author Ares
     * TODO(SqlProvider)
     */
    public class SqlProvider {
        
        private static final String TABLE = "question";
    
        public String saveAll(Map<String, List<Question>> params){
            List<Question> list = (List<Question>)params.get("list");
            if(list!=null){
                StringBuffer sb = new StringBuffer("insert into ").append(TABLE).append(" values ");
                MessageFormat mf = new MessageFormat("(#'{'list[{0}].id}, #'{'list[{0}].qorder}, #'{'list[{0}].qname}, #'{'list[{0}].qcontent}, #'{'list[{0}].updateTime})");
                for (int i=0; i<list.size(); i++) {
                    sb.append(mf.format(new Object[]{i}));  
                    if (i < list.size() - 1) {  
                        sb.append(",");  
                    }  
                }
                System.out.println(sb.toString());
                return sb.toString();
            }
            return null;
        }
        
    }

    接下来,把配置文件拿过来,

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "mybatis-3-config.dtd">
    
    <configuration>
    
        <typeAliases>
            <package name="com.test.model"/>
        </typeAliases>
    
        <environments default="development">
            <environment id="development">
                <transactionManager type="jdbc" />
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true"/>
                    <property name="username" value="root"/>
                    <property name="password" value="test"/>
                </dataSource>
            </environment>
        </environments>
        
        <mappers>
            <package name="com.test.dao"/>
        </mappers>
        <!-- 
        <mappers>
            <mapper resource="com/test/model/Question.xml"/>
        </mappers>
         -->
    </configuration>

    最后,开始测试

    /**
     * @Title: MyBatisTest.java
     * @Package com.test.test
     * @Description: TODO(MyBatisTest)
     * Copyright: Copyright (c) 2012 Company China Foreign Exchange Trade System and National Interbank Funding Center.
     * Building 24,1387 ZhangDong Road, Shanghai, China.
     * All Rights Reserved. 
     * Company: Insigma HT
     * @author Ares
     * @date 2013-06-24 下午3:48:31
     *
     * Revision History
     *
     * Date            Programmer              Notes
     * ---------    ---------------------  --------------------------------------------
     * 2013-06-24       Ares                    initial
     */
    package com.test.test;
    
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.UUID;
    
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;
    
    import com.test.dao.QuestionDAO;
    import com.test.model.Question;
    
    /**
     * @author Ares
     * TODO(MyBatisTest)
     */
    public class MyBatisTest {
    
        @Test
        public void testMyBatis(){
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(this.getClass().getResourceAsStream("/com/test/cfg/sqlMapClient.xml"));
            SqlSession sqlSession = sqlSessionFactory.openSession();
            QuestionDAO questionDao = sqlSession.getMapper(QuestionDAO.class);
            
            List<Question> list = new ArrayList<Question>();
            Question q = new Question();
            q.setId(UUID.randomUUID().toString());
            q.setQname("Are you ok?");
            q.setQcontent("I'm ok.");
            q.setQorder(6);
            q.setUpdateTime(new Date());
            list.add(q);
            
            Question q2 = new Question();
            q2.setId(UUID.randomUUID().toString());
            q2.setQname("How are you?");
            q2.setQcontent("I'm ok.");
            q2.setQorder(6);
            q2.setUpdateTime(new Date());
            list.add(q2);
            
            questionDao.saveAll(list);
            sqlSession.commit();
            
            List<Question> questions = questionDao.findAll();
            for (Question question : questions) {
                System.out.println(question.getQname() + " 	Reply: "+question.getQcontent());
            }
            
            sqlSession.close();
        }
    }
  • 相关阅读:
    [转]swift 学习资源 大集合
    [转]Swift 编程语言入门教程
    luogu 3375 KMP模板题
    我终于明白了的马拉车算法———感谢我们学校的大佬
    A*B problem(FFT)
    又是毕业季1&&又是毕业季2
    邻接表——最简单易懂的写法——向非我非非我大佬低头
    马拉车——Manacher一篇看上去很靠谱的理解(代码显然易懂)
    邻接表存储
    一直想写的关于tarjan算法的理解——向struct edge大佬低头
  • 原文地址:https://www.cnblogs.com/icerainsoft/p/3152663.html
Copyright © 2011-2022 走看看