Mybatis01

之前已经写过查询的具体使用,所以这里就不再赘述。

封装SQLSession的工具类

package com.xl.util;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisTool {

	static SqlSessionFactory factory = null;
	static{
		try {
			//1,读取配置文件,将数据放入输入流中
			InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
			//2,创建SqlSessionFactory对象,为了生成SqlSession对象
		    factory = new SqlSessionFactoryBuilder().build(is);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 打开连接
	 * @return
	 */
	public static SqlSession getSession() {
		return factory.openSession();
	}
	/**
	 * 关闭连接
	 * @param session
	 */
	public static void closeSession(SqlSession session) {
		if(session!=null){
			session.close();
		}
	}
}

添加操作

1,在mapper里面定义对应方法

/**
* 添加一个用户
* @param user
* @return
*/
int addUser(User user);

2,编写对应的映射文件(xml文件)

<!-- 添加一个用户  增删改默认返回int,所以不需要resultType -->
<insert id="addUser"  parameterType="com.xl.pojo.User">
	INSERT INTO `user` VALUES(NULL,#{loginName},#{loginPwd},#{userName},#{sex},#{bornDate})
</insert>

3,对应的调用

SqlSession session = MybatisTool.getSession();
User u = new User();
u.setLoginName("li");
u.setLoginPwd("si");
u.setUserName("李思");
u.setSex("男");
u.setBornDate("2000-1-1");
int con = session.getMapper(UserMapper.class).addUser(u);
if(con!=0) {
	System.out.println("添加成功");
}
//在mybatis里面默认就是开启了事务的,做查询的时候没有影响,但是做添加、修改、删除这类写的操作时,必须提交事务
session.commit();
MybatisTool.closeSession(session);

修改操作

1,在mapper里面定义对应方法

/**
* 修改一个用户,这里就先简单修改一个登录名
* @param user
* @return
*/
int update(User user);

2,编写对应的映射文件(xml文件)

<!-- 修改一个用户的登录名	 -->
<update id="update" parameterType="com.xl.pojo.User">
	UPDATE `user` SET loginName = #{loginName} WHERE userId = #{userId}
</update>

3,对应的调用

SqlSession session = MybatisTool.getSession();
User u = new User();
u.setLoginName("haha");
u.setUserId(1);
int con = session.getMapper(UserMapper.class).update(u);
if(con!=0) {
	System.out.println("修改成功");
}
session.commit();
MybatisTool.closeSession(session);

删除操作

1,在mapper里面定义对应方法

/**
* 删除一个用户
* @param userId
* @return
*/
int delUser(Integer userId);

2,编写对应的映射文件(xml文件)

<!-- 根据id删除一个用户 -->
<delete id="delUser" parameterType="java.lang.Integer">
	DELETE FROM `user` WHERE userId = #{userId}
</delete>

3,对应的调用

SqlSession session = MybatisTool.getSession();
int con = session.getMapper(UserMapper.class).delUser(11);
if(con!=0) {
	System.out.println("删除成功");
}
session.commit();
MybatisTool.closeSession(session);

Mybatis执行增删改需要注意的地方:

  • 都不需要写resultType,返回类型默认是影响行数
  • 占位符:#{实体类的属性}
  • 增删改都需要提交事务SqlSession.commit(),否则数据库不会更新。

Mybatis01

上一篇:计算程序耗时工具


下一篇:@Scheduled 注解配置