MyBatis学习(二)--基本CRUD操作实例

写在前面
这篇依然是参考写的,一些基本的实例。下一篇打算自己总结,慢慢的摸索着写了。
孤傲苍狼的博客:https://www.cnblogs.com/xdp-gacl/category/655890.html
代码中会有很多重要的注释,请不要忽略。

使用MyBatis进行基本的CRUD

CRUD 就是平时说的增删查改,这篇都是用xml的方式实现。暂时不想写接口的方式,个人觉得放在后边比较合适。

接上一篇文章中的UserMapper.xml,先映射sql。
根据语句写对应的标签,虽然最后识别是sql语句为准,标签是无所谓的,还是应该按照规范写。

<?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="com.project.mapper.UserBeanMapper">


<select id="getUser" resultType="UserBean">
SELECT * FROM user;
</select>

<!--parameterType 表示传入的参数类型,这里UserBean是上一篇文章中设置的对象的别名
这里也可以是一些其他类型,或者基本类型 int String
#{u_account} 是在取bean对象属性的值,一定要和属性名一致
如果传入的参数的基本类型,可以随便写名字。
注:除了#{},还有一种写法${},简单说下区别:
1. $ 是直接在拼接sql  -- statement
2. # 是参数化sql  -- preparestatement
-->
<insert id="insertUser" parameterType="UserBean">
INSERT INTO user(u_account,u_password) VALUES(#{u_account},#{u_password});
</insert>

<!-- 根据对象中的账号修改密码 -->
<update id="updateUser" parameterType="UserBean">
UPDATE user SET u_password = #{u_password} WHERE u_account = #{u_account};
</update>

<!-- 根据账号删除用户 -->
<delete id="deleteUser" parameterType="String">
DELETE FROM user WHERE u_account = #{account};
</delete>

</mapper> 

测试类代码

package com.project.mian;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.jupiter.api.Test;

import com.project.bean.UserBean;
import com.project.mybatis.util.MyBatisUtil;

public class MainClass {
	
	@Test
	public void select() {
		SqlSession session = MyBatisUtil.getSqlSession();
		try {
			List<UserBean> users = session.selectList("com.project.mapper.UserBeanMapper.getUser");
			for (UserBean user : users) {
				System.out.println(user);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			session.close();
		}
	}
	
	@Test
	public void insert() {
		SqlSession session = MyBatisUtil.getSqlSession();
		UserBean user = new UserBean();
		user.setU_account("acc_3");
		user.setU_password("123456");
		try {
			//第一个参数是mapper命名空间名加上标签的id
			//第二个参数就是在标签中写的类型
			//方法会返回值一个int值,就是数据库中的影响行数
			int len = session.insert("com.project.mapper.UserBeanMapper.insertUser",user);
			System.out.println("影响行数:"+len);
			//默认情况下,insert、update、delete都不会自动提交,需要显示调用
			session.commit();
		} catch (Exception e) {
			//如果发生异常则回滚
			session.rollback();
			e.printStackTrace();
		}finally {
			session.close();
		}
	}
	
	@Test
	public void update() {
		UserBean user = new UserBean();
		user.setU_account("acc_3");
		user.setU_password("654321");
		SqlSession session = MyBatisUtil.getSqlSession();
		try {
			int len = session.update("com.project.mapper.UserBeanMapper.updateUser", user);
			System.out.println(len);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		}finally {
			session.close();
		}
	}
	
	@Test
	public void delete() {
		SqlSession session = MyBatisUtil.getSqlSession();
		try {
			int len = session.delete("com.project.mapper.UserBeanMapper.deleteUser","acc_3");
			System.out.println(len);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		}finally {
			session.close();
		}
	}
	
	
}

猜你喜欢

转载自blog.csdn.net/candy_27/article/details/83755993