一、一般增删查改操作
数据映射文件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