完成核心配置文件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();