首页 > 代码库 > mybatis 2 -常用数据操作

mybatis 2 -常用数据操作

1、写入数据并获取自增ID

XML配置:

  <!-- 写入数据获取自增ID -->  <insert id="insertLog"   parameterType="com.mamaguwen.entity.sys_loginlog"  useGeneratedKeys="true" keyProperty="logid">      insert into  sys_loginlog  (UserName) values  (#{username})   </insert>

测试代码:

@Test    public void insertLog() {        sys_loginlog model = new sys_loginlog();        model.setIslogin(true);        model.setLoginip("127.0.0.1");        model.setLogintime(new Date());        model.setUsername("rhythmk");        int total = loginlog.insertLog(model);        System.out.println("影响数据条:" + total);        System.out.println("ID:" + model.getLogid());        /*         * 影响数据条:1 ID:4          */    }

2、更新数据

  <!-- 更新数据 -->  <update id="updateLog"   parameterType="com.mamaguwen.entity.sys_loginlog">      update sys_loginlog set username=#{username}      where LogId=#{logid}  </update>
    /*     * 更新数据     */    @Test    public void updateLog() {        sys_loginlog record = new sys_loginlog();        record.setLogid(4L);        record.setUsername("wangkun");        int total = loginlog.updateLog(record);        System.out.println("影响数据条:" + total);    }

3、返回单个字符串对象:

    <!-- -返回单字段内容 -->   <select id="selectStringByKey"  resultType="String"  >    select   UserName   from  sys_loginlog    where LogId = #{logid}  </select>
    /*     * 返回当个简单对象     */    @Test    public void selectStringByKey() {        String record = loginlog.selectStringByKey(4);        System.out.println("返回的字符串:" + record);    }

4、返回List对象

<select id="selectLogList"    resultType="com.mamaguwen.entity.sys_loginlog">       select * from  sys_loginlog   </select>
    /*     * 获取所有用户日志     */    @Test    public void selectLogList() {        List<sys_loginlog> list = loginlog.selectLogList();        for (sys_loginlog log : list) {            System.out.println(log.getUsername());        }    }

5、返回List<String> 对象

     <select id="selectUserNameList"    resultType="String">       select UserName from  sys_loginlog   </select>
    /*     * 获取所有用户名     */    @Test    public void selectUserNameList() {        List<String> list = loginlog.selectUserNameList();        for (String str : list) {            System.out.println(str);        }    }

6、传入单个参数

     <select id="selectLogByKey"   resultType="com.mamaguwen.entity.sys_loginlog">         select * from  sys_loginlog  Where LogId=#{logid}     </select>     
    /*     * 根据主键获取日志     */    @Test    public void selectLogByKey() {        sys_loginlog model = loginlog.selectLogByKey(5);        String str = String.format("id:%d,username:%s", model.getLogid(),                model.getUsername());        System.out.println(str);    }

7、执行存储过程:

    <!-- 执行存储过程 -->     <select id="callProc"   resultType="String"  >              <!--                     drop procedure if exists ShowString;                    CREATE PROCEDURE  ShowString(                         Str VARCHAR(30)                    )                    BEGIN                     select Str as Item;                    END;                    CALL  ShowString(‘rhythmk‘)      -->         call  ShowString (#{str})     </select>
/*     * 执行存储过程     */    @Test    public void callProc() {        String str = loginlog.callProc("rhytmk");        System.out.println(str);    }

8、批量写入数据

  <!-- 批量执行SQL -->     <!--  生成SQL:               insert into  sys_loginlog (username) values (‘a‘),(‘b‘)      -->     <insert id="insertBatch">         insert into  sys_loginlog (username) values         <foreach collection="list"  item="item"  index="index"  separator=",">               (#{item.username})         </foreach>     </insert>
    /*     * 批量写入     */    @Test    public void insertBatch() {        List<sys_loginlog> list = new ArrayList<sys_loginlog>();        for (int i = 0, j = 10; i < j; i++) {            sys_loginlog log = new sys_loginlog();            log.setUsername(String.format("wangkun%s", i));            list.add(log);        }        int total = loginlog.insertBatch(list);        System.out.println("生成数据条:" + total);    }

9、将字符串当参数出入进去

         <select id="selectLogByMap"     parameterType="Map"  resultType="com.mamaguwen.entity.sys_loginlog">         select * from sys_loginlog             where (username=#{username1} or username=#{username2} )     </select>  
    /*     * 通过Map传入参数     */    @Test  public   void   selectLogByMap()  {        Map<String, String> map=new HashMap<String,String>();        map.put("username1", "rhythmk");        map.put("username2", "wangkun");       List<sys_loginlog> list= loginlog.selectLogByMap(map);       for(sys_loginlog model:list)       {            String info=  String.format("id%d,username%s", model.getLogid(),                   model.getUsername());            System.out.println(info);       }  }

 

备注:

   表结构:

CREATE TABLE `sys_loginlog` (  `LogId` bigint(20) NOT NULL AUTO_INCREMENT,  `UserName` varchar(64) COLLATE utf8_bin DEFAULT NULL,  `Pwd` varchar(32) COLLATE utf8_bin DEFAULT NULL,  `IsLogin` bit(1) DEFAULT NULL,  `LoginIp` varchar(64) COLLATE utf8_bin DEFAULT NULL,  `LoginTime` datetime DEFAULT NULL,  PRIMARY KEY (`LogId`)) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

 Mapp数据操作接口:

public interface sys_loginlogMapper {    /*     *   写入日志并返回自增的ID     * */    int insertLog (sys_loginlog record);        /*   更新数据     * */    int updateLog(sys_loginlog record);        /*      *   返回当个简单对象     * */    String selectStringByKey(@Param("logid") int logId );            /*     * 获取所有用户日志     * */    List<sys_loginlog>  selectLogList();        /*     *  获取所有用户名     * */    List<String> selectUserNameList();        /*     * 根据主键获取日志     * */    sys_loginlog selectLogByKey(@Param("logid") int logid);        /*     * 执行存储过程     * */    String callProc(@Param("str") String str);        /*     * 批量写入     * */    int  insertBatch(List<sys_loginlog> list);        /*     *  通过Map传入参数     * */   List<sys_loginlog>   selectLogByMap(Map<String, String> map);    }

 测试用例代码:

package com.mamaguwen.dao.test;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.management.loading.PrivateMLet;import org.apache.commons.lang3.time.DateFormatUtils;import org.apache.ibatis.annotations.Param;import org.apache.log4j.Logger;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.mamaguwen.dao.sys_loginlogMapper;import com.mamaguwen.entity.sys_loginlog;@RunWith(value = SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath:spring.xml",        "classpath:spring-mybatis.xml" })public class TestSysloginlogMapper {    private static final Logger logger = Logger.getLogger(Test_SysUser.class);    private sys_loginlogMapper loginlog;    public sys_loginlogMapper getLoginlog() {        return loginlog;    }    @Autowired    public void setLoginlog(sys_loginlogMapper loginlog) {        this.loginlog = loginlog;    }    /*     * 写入日志并返回自增的ID     */    @Test    public void insertLog() {        sys_loginlog model = new sys_loginlog();        model.setIslogin(true);        model.setLoginip("127.0.0.1");        model.setLogintime(new Date());        model.setUsername("rhythmk");        int total = loginlog.insertLog(model);        System.out.println("影响数据条:" + total);        System.out.println("ID:" + model.getLogid());        /*         * 影响数据条:1 ID:4          */    }    /*     * 更新数据     */    @Test    public void updateLog() {        sys_loginlog record = new sys_loginlog();        record.setLogid(4L);        record.setUsername("wangkun");        int total = loginlog.updateLog(record);        System.out.println("影响数据条:" + total);    }    /*     * 返回当个简单对象     */    @Test    public void selectStringByKey() {        String record = loginlog.selectStringByKey(4);        System.out.println("返回的字符串:" + record);    }    /*     * 获取所有用户日志     */    @Test    public void selectLogList() {        List<sys_loginlog> list = loginlog.selectLogList();        for (sys_loginlog log : list) {            System.out.println(log.getUsername());        }    }    /*     * 获取所有用户名     */    @Test    public void selectUserNameList() {        List<String> list = loginlog.selectUserNameList();        for (String str : list) {            System.out.println(str);        }    }    /*     * 根据主键获取日志     */    @Test    public void selectLogByKey() {        sys_loginlog model = loginlog.selectLogByKey(5);        String str = String.format("id:%d,username:%s", model.getLogid(),                model.getUsername());        System.out.println(str);    }    /*     * 执行存储过程     */    @Test    public void callProc() {        String str = loginlog.callProc("rhytmk");        System.out.println(str);    }    /*     * 批量写入     */    @Test    public void insertBatch() {        List<sys_loginlog> list = new ArrayList<sys_loginlog>();        for (int i = 0, j = 10; i < j; i++) {            sys_loginlog log = new sys_loginlog();            log.setUsername(String.format("wangkun%s", i));            list.add(log);        }        int total = loginlog.insertBatch(list);        System.out.println("生成数据条:" + total);    }    /*     * 通过Map传入参数     */    @Test  public   void   selectLogByMap()  {        Map<String, String> map=new HashMap<String,String>();        map.put("username1", "rhythmk");        map.put("username2", "wangkun");       List<sys_loginlog> list= loginlog.selectLogByMap(map);       for(sys_loginlog model:list)       {            String info=  String.format("id%d,username%s", model.getLogid(),                   model.getUsername());            System.out.println(info);       }  }}
View Code

 

mybatis 2 -常用数据操作