Mybatis增删改查

完成核心配置文件Mybatis-config.xml以及pojo实体类

范例:根据用户名称和角色id进行查询,显示用户的角色名称等信息
分析:数据查询 多表(smbms_user、smbms_role)连接查询
1、接口方法

//根据用户名称和角色id进行查询,显示用户的角色名称等信息
	public List<User> getUserListIncludeRoleName(User user);

2.映射文件

<!-- 根据用户名称和角色id进行查询,显示用户的角色名称等信息 -->
  <select id="getUserListIncludeRoleName" resultType="User" parameterType="User" resultMap="userList">
  select u.*,r.roleName from smbms_user u,smbms_role r where u.userName like concat('%',#{userName},'%') and u.userRole=#{userRole} and u.userRole=r.id
  </select>
  <!-- User表中没有角色名称和user类属性对应,属于复杂结果集,因此需要用resultMaP进行结果集映射 ,还可以进行映射复用-->
  <!-- resultMap有两个属性type="映射的那个类"  id="唯一标识名字" -->
 
 
  <resultMap type="User" id="userList">
  <!-- id 用来映射两张表的主键 result用来映射两张表的普通属性  当user类中和user表中没有对应的时候在下面进行对应,其他会自动进行匹配-->
  <id property="id" column="id"/>
  <!-- property="类中属性"  column="表中字段"-->
  <result property="userName" column="userName"/>
  <result property="userPassword" column="userPassword"/>
  <result property="phone" column="phone"/>
  <result property="userRoleName" column="roleName"/>
  </resultMap>

测试

 @Test
    public void test6(){
    	SqlSession sqlSession=SqlSessionUtil.creatSqlSession();
    	User user=new User();
    	user.setUserName("赵");
    	user.setUserRole(2);
    	List<User> list=sqlSession.getMapper(UserMapper.class).getUserListIncludeRoleName(user);
    	for (User u : list) {
			System.out.println(u.getUserName() + "\t" + u.getUserPassword()
					+ "\t" + u.getAddress()+"\t"+u.getUserRoleName());
		}
    	SqlSessionUtil.closSqleSession(sqlSession);
    }

范例:添加用户
1、接口方法

//增加用户
	public void add(User user);

2.映射文件

<!-- 增加用户 -->
  <insert id="add" parameterType="User">
       insert into smbms_user (userCode,userName,userPassword,creationDate) values (#{userCode},#{userName},#{userPassword},#{creationDate})
  </insert>

测试

@Test
    public void test7() {
    	SqlSession sqlSession=SqlSessionUtil.creatSqlSession();
    	User user=new User();
		user.setUserCode("laohe");
		user.setUserName("老何");
		user.setUserRole(2);
		user.setUserPassword("123456");
		try {
			user.setCreationDate(new SimpleDateFormat("yyyy-MM-dd").parse("2020-07-09"));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		int result=sqlSession.insert("com.oupeng.user.dao.UserMapper.add",user);
		//注意事务的提交,如果不提交,显示添加成功,但实际并没有成功
		sqlSession.commit();
		
		if(result>0) {
			System.out.println("用户添加成功");
		}else {
			System.out.println("用户添加失败");
		}
    	SqlSessionUtil.closSqleSession(sqlSession);
    }

范例:修改用户
1、接口方法

//修改用户
	public int modify(User user);

2、映射文件

<!-- 修改用户 -->
  <update id="modify" parameterType="User">
  update smbms_user set userName=#{userName},userPassword=#{userPassword} where id=#{id}
  </update>

测试

@Test
    public void test8() {
    	SqlSession sqlSession=SqlSessionUtil.creatSqlSession();
    	User user = new User();
		user.setId(24);
		user.setUserCode("laohe");
		user.setUserName("隔壁老王");
		user.setUserRole(2);
		user.setUserPassword("123456789");
		try {
			user.setCreationDate(new SimpleDateFormat("yyyy-MM-dd")
					.parse("2020-07-09"));
		} catch (ParseException e) {
			e.printStackTrace();
		}

		int result = sqlSession.update("com.oupeng.user.dao.UserMapper.modify",user);

		//注意事务的提交,如果不提交,显示添加成功,但实际并没有成功
		sqlSession.commit();
		
		if(result>0) {
			System.out.println("用户修改成功");
		}else {
			System.out.println("用户修改失败");
		}
    	SqlSessionUtil.closSqleSession(sqlSession);
    }

修改用insert方法
范例:删除用户
1、接口方法

public int deleteByUserId(@Param("id") Integer userId);

2、映射文件

<!-- 删除用户 -->
	<delete id="deleteByUserId" parameterType="Integer">
		delete from smbms_user where id=#{id}
	</delete>

测试

@Test
    public void test9() {
    	SqlSession sqlSession=SqlSessionUtil.creatSqlSession();
    	

    	int result = 0;
		try {
			result = sqlSession.delete(
					"com.oupeng.user.dao.UserMapper.deleteByUserId", 24);
			sqlSession.commit();
		} catch (Exception e) {
			sqlSession.rollback();//回滚
		}

		
		if(result>0) {
			System.out.println("用户删除成功");
		}else {
			System.out.println("用户删除失败");
		}
    	SqlSessionUtil.closSqleSession(sqlSession);
    }

增加,修改、删除要注意提交sqlSession.commit();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值