mybatis3常见数据操作

2 篇文章 0 订阅
2 篇文章 0 订阅

一、一般增删查改操作  

数据映射文件User.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="UserMapper">  
  
    <!-- select 语句,未传参,返回int值 。 -->  
    <select id="countAll" resultType="java.lang.Integer">    
    <![CDATA[ select count(*) from T_TEST_USER ]]>  
    </select>  
  
    <!-- select 语句,传参一个,返回User对象 。注:select id as id,name as name,pwd as pwd   
        的as后面的名称要与User类中属性名称要一一对应 -->  
    <select id="getUserByName" parameterType="String"  
        resultType="com.hsinghsu.testSSI.model.User">  
        select  
        id as id,name as name,pwd as pwd  
        from T_TEST_USER  
        WHERE NAME = #{name}  
    </select>  
  
    <!-- select 语句,传参多个,返回User对象。注:此时select * 语句中对应的表的列名要与User类中属性名称要一一对应 -->  
    <select id="getUserByNameAndAge" parameterType="Map"  
        resultType="com.hsinghsu.testSSI.model.User">  
        select  
        *  
        from T_TEST_USER  
        WHERE NAME = #{name} and AGE =  
        #{age}  
    </select>  
  
    <!-- select 语句,传参一个,返回User对象。 -->  
    <select id="getUserByAge" parameterType="String"  
        resultType="com.hsinghsu.testSSI.model.User">  
        select  
        *  
        from T_TEST_USER  
        WHERE AGE = #{age}  
    </select>  
  
    <!-- select 语句,传参一个,返回HashMap类型。 -->  
    <select id="getUserByPwd" parameterType="String" resultType="Map">  
        select  
        *  
        from T_TEST_USER  
        WHERE PWD = #{pwd}  
    </select>  
  
    <!-- select 语句,传参一个,返回HashMap类型。 -->  
    <select id="getUserBySex" parameterType="String" resultType="Map">  
        select  
        *  
        from T_TEST_USER  
        WHERE SEX = #{sex}  
    </select>  
  
    <insert id="insertUser" parameterType="com.hsinghsu.testSSI.model.User">  
        insert into  
        T_TEST_USER(ID,NAME,PWD,AGE,SEX)  
        values(#{id},#{name},#{pwd},#{age},#{sex})  
    </insert>  
  
    <update id="updateUser" parameterType="com.hsinghsu.testSSI.model.User">  
        UPDATE T_TEST_USER  
        SET NAME = #{name},  
        PWD = #{pwd},  
        AGE = #{age},  
        SEX = #{sex}  
        WHERE ID = #{id}  
    </update>  
      
    <delete id="deleteUserById" parameterType="int">  
        delete from T_TEST_USER where ID = #{id}  
    </delete>  
  
</mapper>  
执行文件UserDaoImpl.java代码如下: 
package com.hsinghsu.testSSI.dao.impl;  
  
import java.util.ArrayList;  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
  
import org.mybatis.spring.support.SqlSessionDaoSupport;  
import org.springframework.stereotype.Repository;  
  
import com.hsinghsu.testSSI.dao.UserDao;  
import com.hsinghsu.testSSI.model.User;  
import com.hsinghsu.testSSI.util.SQLAdapter;  
  
@Repository(value = "userDao")  
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {  
  
    @Override  
    public User getUserByName(String name) {  
  
        User user = new User();  
  
        // select语句,传入一个参数,返回User对象  -------------------------------------------------------------------------  
        int count = (Integer) getSqlSession().selectOne("UserMapper.countAll");// select语句,未传入参数,返回int值  
        user = getSqlSession().selectOne("UserMapper.getUserByName", name);// select语句,传入一个参数,返回User对象  
  
        //select语句,传入两个参数,返回User对象  --------------------------------------------------------------------------  
        User usr = new User();  
        Map<String, String> map = new HashMap<String, String>();  
        map.put("name", "hsing");  
        map.put("age", "12");  
        usr = getSqlSession().selectOne("UserMapper.getUserByNameAndAge", map);// select语句,传入两个参数,返回User对象  
  
        //select语句,传入一个参数,返回List类型  --------------------------------------------------------------------------  
        List<User> userList = new ArrayList<User>();  
        userList = getSqlSession().selectList("UserMapper.getUserByAge", "12");// select语句,传入一个参数,返回List类型  
        for (User u : userList) {  
            System.out.println("--u--name:" + u.getName() + " pwd:" + u.getPwd());  
        }  
  
        //select语句,传入一个参数,返回HashMap类型 -----------------------------------------------------------------------  
        HashMap<String, Object> userMap = (HashMap<String, Object>) getSqlSession().selectOne("UserMapper.getUserByPwd", "gg");// select语句,传入一个参数,返回HashMap类型  
        if (userMap != null) {  
            System.out.println(userMap.toString() + "--m--name:" + userMap.get("NAME") + " pwd:" + userMap.get("PWD"));// 注:map的key为数据表的列,区分大小写  
        } else {  
            System.out.println("userMap is null");  
        }  
  
        //select语句,传入一个参数,返回List<HashMap>类型  -----------------------------------------------------------------  
        List<HashMap<String, Object>> userMapList = new ArrayList<HashMap<String, Object>>();  
        userMapList = getSqlSession().selectList("UserMapper.getUserBySex", "0");// select语句,传入一个参数,返回List<HashMap>类型  
        for (HashMap<String, Object> umap : userMapList) {  
            System.out.println(umap.toString() + "--map--name:" + umap.get("NAME") + " pwd:" + umap.get("PWD"));// 注:map的key为数据表的列,区分大小写  
        }  
          
        //insert语句,传入一个对象,成功返回1  -------------------------------------------------------------------------------------  
        User oneUser = new User();  
        oneUser.setId(Long.parseLong("6"));  
        oneUser.setName("go07");  
        oneUser.setPwd("pesd07");  
        oneUser.setAge(Long.parseLong("25"));  
        oneUser.setSex(Long.parseLong("1"));  
        int result = getSqlSession().insert("UserMapper.insertUser",oneUser);//insert语句,传入一个对象  
        System.out.println("insert result:"+result);  
          
        //update语句,传入一个对象,成功返回1  -------------------------------------------------------------------------------------  
        User oneUser2 = new User();  
        oneUser2.setId(Long.parseLong("6"));  
        oneUser2.setName("go07--");  
        oneUser2.setPwd("pesd07--");  
        oneUser2.setAge(Long.parseLong("26"));  
        oneUser2.setSex(Long.parseLong("0"));  
        int updateResult = getSqlSession().update("UserMapper.updateUser",oneUser2);//insert语句,传入一个对象  
        System.out.println("update result:"+updateResult);  
          
        //delete语句,传入一个值,成功返回1 -------------------------------------------------------------------------------------  
        int result3 = getSqlSession().delete("UserMapper.deleteUserById",7);//delete语句,传入一个参数  
        System.out.println("delete result:"+result3);  
          
          
        return user;  
    }  
  
}  
二、直接执行SQL语句  
在一般应用中,经常需要开发人员在java程序中写sql语句,同时需要动态的执行。在这里我们先定义一个SQLAdapter类,用户传递sql语句。  
SQLAdapter.java代码如下: 
package com.hsinghsu.testSSI.util;  
  
public class SQLAdapter {  
      
    String sql;    
        
    public SQLAdapter(String sql) {    
        this.sql = sql;    
    }    
    
    public String getSql() {    
        return sql;    
    }    
    
    public void setSql(String sql) {    
        this.sql = sql;    
    }    
  
}  
在映射文件User.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="UserMapper">  
  
    <select id="queryBySql" parameterType="com.hsinghsu.testSSI.util.SQLAdapter"  
        resultType="Map">  
        ${sql}  
    </select>  
  
    <insert id="insertBySql" parameterType="com.hsinghsu.testSSI.util.SQLAdapter">  
        ${sql}  
    </insert>  
      
    <update id="updateBySql" parameterType="com.hsinghsu.testSSI.util.SQLAdapter">  
        ${sql}  
    </update>  
      
    <delete id="deleteBySql" parameterType="com.hsinghsu.testSSI.util.SQLAdapter">  
        ${sql}  
    </delete>  
  
</mapper> 
在实现类中UserDaoImpl.java代码如下:  
package com.hsinghsu.testSSI.dao.impl;  
  
import java.util.ArrayList;  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
  
import org.mybatis.spring.support.SqlSessionDaoSupport;  
import org.springframework.stereotype.Repository;  
  
import com.hsinghsu.testSSI.dao.UserDao;  
import com.hsinghsu.testSSI.model.User;  
import com.hsinghsu.testSSI.util.SQLAdapter;  
  
@Repository(value = "userDao")  
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {  
  
    @Override  
    public User getUserByName(String name) {  
          
        //=====================================================直接执行sql语句==========================================================  
          
        //select语句 直接执行select sql语句 ---------------------------------------------------------------------------  
        String selectSql = "select ID,NAME,PWD,AGE,SEX from T_TEST_USER WHERE SEX = 1";  
        SQLAdapter selectSqlAdapter = new SQLAdapter(selectSql);  
        List<HashMap<String, Object>> userMapList2 = new ArrayList<HashMap<String, Object>>();  
        userMapList2 = getSqlSession().selectList("UserMapper.queryBySql", selectSqlAdapter);// select语句,传入一个参数,返回List<HashMap>类型  
        for (HashMap<String, Object> umap2 : userMapList2) {  
            System.out.println(umap2.toString() + "--map2--name:" + umap2.get("NAME") + " pwd:" + umap2.get("PWD"));// 注:map的key为数据表的列,区分大小写  
        }  
                  
        //insert语句 直接执行insert sql语句 ---------------------------------------------------------------------------  
        String insertSql = "insert into T_TEST_USER(ID,NAME,PWD,AGE,SEX) values(7,'gogo08','gogopwd08',24,1)";  
        SQLAdapter insertSqlAdapter = new SQLAdapter(insertSql);  
        int result2 = getSqlSession().insert("UserMapper.insertBySql",insertSqlAdapter);  
        System.out.println("insert result2:"+result2);  
          
        //update语句 直接执行update sql语句 ---------------------------------------------------------------------------  
        String updateSql = "UPDATE T_TEST_USER SET NAME = 'GSS00', PWD = 'GG007', AGE = 24, SEX = 1 WHERE ID = 6";  
        SQLAdapter updateSqlAdapter = new SQLAdapter(updateSql);  
        int updateSqlResult = getSqlSession().update("UserMapper.updateBySql",updateSqlAdapter);  
        System.out.println("updateSqlResult result:"+updateSqlResult);  
          
        //delete语句 直接执行delete sql语句 ---------------------------------------------------------------------------  
        String deleteSql = "delete from T_TEST_USER where ID = 5";  
        SQLAdapter deleteSqlAdapter = new SQLAdapter(deleteSql);  
        int deleteSqlResult = getSqlSession().delete("UserMapper.deleteBySql",deleteSqlAdapter);  
        System.out.println("deleteSqlResult result:"+deleteSqlResult);  
          
        //=============================================================================================================================  
  
        return null;  
    }  
  
}

注:struts、spring、mybatis配置详见http://blog.csdn.net/xumengxing/article/details/8728331

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值