mybatis增删改查与批量操作
2017-03-31 10:24
441 查看
本文内容主要介绍单条记录的增删改查操作,MyBatis提供了很多完成单条记录的增删改查操作的API。本例主要讲述<UserMapper> UserMapper org.apache.ibatis.session.SqlSession.getMapper(Class<UserMapper> clazz)的使用。使用此API,我们需要创建UserMapper操作接口,函数名和MyBatis的User.xml配置文件中的操作id名对应。
[java] view
plain copy
print?
public interface UserMapper {
/*======基本增删改查操作======*/
/**
* 删除操作
* @param userName
*/
public void deleteUser(String userName);
/**
* 更新操作
* @param user
*/
public void updateUser(User user);
/**
* 添加操作
* @param user
*/
public void insertUser(User user);
/**
* 查询操作
* @param id
* @return
*/
public User selectUser(int id);
}
MyBatis具体增删改查的操作实现过程。
[java] view
plain copy
print?
/**
* 增加操作
*/
public static void insertUser() {
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
User newUser = new User("MyBatisUser", "123456");
userMapper.insertUser(newUser);
// 这里一定要提交,不然数据进不去数据库中
session.commit();
System.out.println(newUser);
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
/**
* 删除操作
*/
public static void deleteUser(String userName) {
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.deleteUser(userName);
//提交Session,更新数据库
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
/**
* 删除操作
*/
public static void updateUser(User user) {
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.updateUser(user);
// 这里一定要提交,不然数据进不去数据库中
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
/**
* 查询操作
*/
public static User selectUser(int id) {
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.selectUser(id);
return user;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
MyBatisUtil.closeSession(session);
}
}
前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作。
批量增加操作步骤
1. 在接口UserMapper中添加批量增加方法。
[java] view
plain copy
print?
/**
* 批量增加操作
* @param users
*/
public void batchInsertUsers(List<User> users);
2.在User.xml中添加批量增加操作的配置。
[html] view
plain copy
print?
<!-- 批量增加操作 -->
<insert id="batchInsertUsers" parameterType="java.util.List">
insert into mhc_user(userName,password) values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.userName},#{item.password})
</foreach>
</insert>
由于批量增加的方法中参数为List,所以parameterType的值为Java.util.List。
3. 创建批量操作的工具类BatchDataUtils,编写批量增加方法。
[java] view
plain copy
print?
/**
* 批量增加操作
* @param users
*/
public static void batchInsertUsers(List<User> users){
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.batchInsertUsers(users);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
批量删除操作步骤
1. 在接口UserMapper中添加删除增加方法。
[java] view
plain copy
print?
/**
* 批量删除操作
* @param ids
*/
public void batchDeleteUsers(List ids);
2.在User.xml中添加批量增加操作的配置。
[html] view
plain copy
print?
<!-- 批量删除操作 -->
<delete id="batchDeleteUsers" parameterType="java.util.List">
delete from mhc_user where id in
<foreach collection="list" index="index" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</delete>
由于批量删除的方法中参数为List,所以parameterType的值为java.util.List。
3. 在批量操作的工具类BatchDataUtils中编写批量删除方法。
[java] view
plain copy
print?
/**
* 批量删除操作
* @param ids
*/
public static void batchDeleteUsers(List ids){
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.batchDeleteUsers(ids);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
批量查询操作步骤
1. 在接口UserMapper中添加批量查询方法。
[java] view
plain copy
print?
/**
* 批量查询操作
* @param ids
* @return
*/
public List<User> batchSelectUsers(List ids);
2.在User.xml中添加批量查询操作的配置。
[html] view
plain copy
print?
<!-- 批量查询操作 -->
<select id="batchSelectUsers" resultType="User">
select *
from mhc_user where id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
由于批量查询的方法的返回为List<User>,所以resultType的值为User,即com.mahaochen.mybatis.domain.User。详见configuration.xml中。
[html] view
plain copy
print?
<typeAliases>
<!-- 注册实体Bean -->
<typeAlias type="com.mahaochen.mybatis.domain.User" alias="User"/>
</typeAliases>
3. 创建批量操作的工具类BatchDataUtils,编写批量查询方法。
[java] view
plain copy
print?
/**
* 批量查询操作
* @param ids
* @return
*/
public static List<User> batchSelectUsers(List ids){
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
List<User> users = null;
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
users = userMapper.batchSelectUsers(ids);
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
return users;
}
}
批量更细操作步骤
1. 在接口UserMapper中添加批量增加方法。
[java] view
plain copy
print?
/**
* 批量更新操作
* @param ids
*/
public void batchUpdateUsers(List users);
2.在User.xml中添加批量更新操作的配置。
[html] view
plain copy
print?
<!-- 批量更新操作 -->
<!-- FOR MySQL mysql需要数据库连接配置&allowMultiQueries=true
例如:jdbc:mysql://127.0.0.1:3306/mhc?allowMultiQueries=true -->
<update id="batchUpdateUsers" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update mhc_user
<set>
userName = #{item.userName}, password = #{item.password}
</set>
where id = #{item.id}
</foreach>
</update>
<!-- 【扩展知识】 FOR Oracle 有以下三种方式-->
<!-- 方式一 -->
<update id="batchUpdateUsers01" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";" >
update mhc_user
<set>
userName = #{item.userName}, password = #{item.password}
</set>
where id = #{item.id}
</foreach>
</update>
<!-- 方式二 -->
<update id="batchUpdateUsers02" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="begin" close="end;" separator="" >
update mhc_user
<set>
userName = #{item.userName}, password = #{item.password}
</set>
where id = #{item.id};
</foreach>
</update>
<!-- 方式三 -->
<update id="batchUpdateUsers03" parameterType="java.util.List">
begin
<foreach collection="list" item="item" index="index" separator="" >
update mhc_user
<set>
userName = #{item.userName}, password = #{item.password}
</set>
where id = #{item.id};
</foreach>
end;
</update>
由于批量更新的方法中参数为List,所以parameterType的值为java.util.List。
3. 创建批量操作的工具类BatchDataUtils,编写批量更新方法。
[java] view
plain copy
print?
/**
* 批量更新操作
* @param users
*/
public static void batchUpdateUsers(List users){
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.batchUpdateUsers(users);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
[java] view
plain copy
print?
public interface UserMapper {
/*======基本增删改查操作======*/
/**
* 删除操作
* @param userName
*/
public void deleteUser(String userName);
/**
* 更新操作
* @param user
*/
public void updateUser(User user);
/**
* 添加操作
* @param user
*/
public void insertUser(User user);
/**
* 查询操作
* @param id
* @return
*/
public User selectUser(int id);
}
MyBatis具体增删改查的操作实现过程。
[java] view
plain copy
print?
/**
* 增加操作
*/
public static void insertUser() {
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
User newUser = new User("MyBatisUser", "123456");
userMapper.insertUser(newUser);
// 这里一定要提交,不然数据进不去数据库中
session.commit();
System.out.println(newUser);
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
/**
* 删除操作
*/
public static void deleteUser(String userName) {
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.deleteUser(userName);
//提交Session,更新数据库
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
/**
* 删除操作
*/
public static void updateUser(User user) {
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.updateUser(user);
// 这里一定要提交,不然数据进不去数据库中
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
/**
* 查询操作
*/
public static User selectUser(int id) {
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.selectUser(id);
return user;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
MyBatisUtil.closeSession(session);
}
}
前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作。
批量增加操作步骤
1. 在接口UserMapper中添加批量增加方法。
[java] view
plain copy
print?
/**
* 批量增加操作
* @param users
*/
public void batchInsertUsers(List<User> users);
2.在User.xml中添加批量增加操作的配置。
[html] view
plain copy
print?
<!-- 批量增加操作 -->
<insert id="batchInsertUsers" parameterType="java.util.List">
insert into mhc_user(userName,password) values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.userName},#{item.password})
</foreach>
</insert>
由于批量增加的方法中参数为List,所以parameterType的值为Java.util.List。
3. 创建批量操作的工具类BatchDataUtils,编写批量增加方法。
[java] view
plain copy
print?
/**
* 批量增加操作
* @param users
*/
public static void batchInsertUsers(List<User> users){
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.batchInsertUsers(users);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
批量删除操作步骤
1. 在接口UserMapper中添加删除增加方法。
[java] view
plain copy
print?
/**
* 批量删除操作
* @param ids
*/
public void batchDeleteUsers(List ids);
2.在User.xml中添加批量增加操作的配置。
[html] view
plain copy
print?
<!-- 批量删除操作 -->
<delete id="batchDeleteUsers" parameterType="java.util.List">
delete from mhc_user where id in
<foreach collection="list" index="index" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</delete>
由于批量删除的方法中参数为List,所以parameterType的值为java.util.List。
3. 在批量操作的工具类BatchDataUtils中编写批量删除方法。
[java] view
plain copy
print?
/**
* 批量删除操作
* @param ids
*/
public static void batchDeleteUsers(List ids){
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.batchDeleteUsers(ids);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
批量查询操作步骤
1. 在接口UserMapper中添加批量查询方法。
[java] view
plain copy
print?
/**
* 批量查询操作
* @param ids
* @return
*/
public List<User> batchSelectUsers(List ids);
2.在User.xml中添加批量查询操作的配置。
[html] view
plain copy
print?
<!-- 批量查询操作 -->
<select id="batchSelectUsers" resultType="User">
select *
from mhc_user where id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
由于批量查询的方法的返回为List<User>,所以resultType的值为User,即com.mahaochen.mybatis.domain.User。详见configuration.xml中。
[html] view
plain copy
print?
<typeAliases>
<!-- 注册实体Bean -->
<typeAlias type="com.mahaochen.mybatis.domain.User" alias="User"/>
</typeAliases>
3. 创建批量操作的工具类BatchDataUtils,编写批量查询方法。
[java] view
plain copy
print?
/**
* 批量查询操作
* @param ids
* @return
*/
public static List<User> batchSelectUsers(List ids){
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
List<User> users = null;
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
users = userMapper.batchSelectUsers(ids);
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
return users;
}
}
批量更细操作步骤
1. 在接口UserMapper中添加批量增加方法。
[java] view
plain copy
print?
/**
* 批量更新操作
* @param ids
*/
public void batchUpdateUsers(List users);
2.在User.xml中添加批量更新操作的配置。
[html] view
plain copy
print?
<!-- 批量更新操作 -->
<!-- FOR MySQL mysql需要数据库连接配置&allowMultiQueries=true
例如:jdbc:mysql://127.0.0.1:3306/mhc?allowMultiQueries=true -->
<update id="batchUpdateUsers" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update mhc_user
<set>
userName = #{item.userName}, password = #{item.password}
</set>
where id = #{item.id}
</foreach>
</update>
<!-- 【扩展知识】 FOR Oracle 有以下三种方式-->
<!-- 方式一 -->
<update id="batchUpdateUsers01" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";" >
update mhc_user
<set>
userName = #{item.userName}, password = #{item.password}
</set>
where id = #{item.id}
</foreach>
</update>
<!-- 方式二 -->
<update id="batchUpdateUsers02" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="begin" close="end;" separator="" >
update mhc_user
<set>
userName = #{item.userName}, password = #{item.password}
</set>
where id = #{item.id};
</foreach>
</update>
<!-- 方式三 -->
<update id="batchUpdateUsers03" parameterType="java.util.List">
begin
<foreach collection="list" item="item" index="index" separator="" >
update mhc_user
<set>
userName = #{item.userName}, password = #{item.password}
</set>
where id = #{item.id};
</foreach>
end;
</update>
由于批量更新的方法中参数为List,所以parameterType的值为java.util.List。
3. 创建批量操作的工具类BatchDataUtils,编写批量更新方法。
[java] view
plain copy
print?
/**
* 批量更新操作
* @param users
*/
public static void batchUpdateUsers(List users){
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.batchUpdateUsers(users);
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtil.closeSession(session);
}
}
相关文章推荐
- 【Mybatis学习】Mybatis简单增删改查以及批量操作
- MyBatis传参方式和批量操作总结
- mybatis 对oracle和mysql 批量插入操作
- MyBatis的几种批量操作
- MyBatis实战教程之四增删改查操作
- OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)
- (2) MyBatis学习之简单增删改查操作、MyBatis存储过程、MyBatis分页、MyBatis一对一、MyBatis一对多
- 使用oledb对数据库进行增删改查及批量插入操作
- Mybatis使用经验分享之批量操作
- MyBatis对数据库的增删改查操作,简单示例
- MyBatis基本增删改查操作
- myBatis配置文件中调用存储过程以及批量操作
- MyBatis批量操作报错:Parameter 'xxxList' not found. Available parameters are [list]
- mybatis 几种批量操作
- Mybatis之批量更新操作
- MyBatis 批量操作、添加日志显示、MyBatis与iBatis区别
- mybatis 的crud及批量cud操作
- Mybatis之Oracle增删查改示例(含Date、Clob数据类型操作)
- MyBatis的几种批量操作
- MyBatis批量操作报错:Parameter 'xxxList' not found. Available parameters are [list]