目录
2.先让大家了解一下配置文件信息的排序:我们在自己配置的时候,一定要选择按照下面的顺序去配置文件信息,否则就是报错了 !
3.第二次学习我们主要去学习配置信息中的内容(mybatis 中文网)第一次我们学习的是入门中的内容!
1.每天学习两小时
从前有个魔仙堡...
2.先让大家了解一下配置文件信息的排序:我们在自己配置的时候,一定要选择按照下面的顺序去配置文件信息,否则就是报错了 !
3.第二次学习我们主要去学习配置信息中的内容(mybatis 中文网)第一次我们学习的是入门中的内容!
大家要简单了解下面的一些信息:
4.进行映射!
1.在user表中的userRole是数字去代表各种角色的,在role表的roleName 是有许多的名称。
我们在进行两表联查的时候,可以查询出来 例如:
这是我运行时经常出现的一个错误:
是我在Mapper中的方法名和userMapper中的 ID 不一样
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.csi.smbms.mapper.UserMapper.list1
第一步:在user中 直接添加 : private String roleName ;
第二步:在mapper中创建一个方法 List<User> list1() ;
第三:在usermapper中配置一条 SQL语句:
<select id="list1" resultType="User"> SELECT u.userCode,u.userName,u.userRole,u.birthday,u.address,u.gender,r.roleName, u.createdBy,u.creationDate,u.id,u.modifyBy,u.modifyDate,u.phone FROM smbms_user u,smbms_role r WHERE u.userRole = r.id </select>第四:测试 -----这样简单的联表就可以了!
@Test
public void testUserList1(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> list1 = userMapper.list1();
System.out.println("userMapper list1 个数是:");
list1.forEach(System.out::println);
MyBatisUtils.close();
}
2.在XML映射器中:找到 resultMap
解决列名不匹配的一种方式:
1.一种是 as rName
2.resultMap
-----------------------------------------
下面这两种只能2选1
resultType VS resultMapresultType: 返回的是一个对象。当数据库中的字段与实体类中的属性如果不一致,那么就会导致不一致的属性获取的值是 NULL 。同样,如果在查询较为复杂的情况下,例如多表查询,也无法实现一个一一映射性的关系。resultMap: 如果查询的结果非常复杂,而且出现了数据库中的字段与实体类中的属性不一致的情况,再有想要实现复杂的关系查询 ( 一对多 多对一等关系 ) 时,使用 resultMap 再合适不过了。以上二者不能够同时存在。
5.多参数传参方式
-
对象形式去设置属性的值
-
使用Map的方式去put 一对值
-
使用顺序传参:
-
也是使用顺序传参:
-
使用的是@Parm传参
对象查询 VS map 查询当查询的条件都是来自于同一张表,在前端,通过类似于 Spring MVC 的框架,能够自动实现数据的封装,此时利用对象封装参数查询就比较方便。当查询的条件都是来自于不同的表内容,那么此时,要么新建立一个临时对象用于作为查询的参数,最好的形式就是 map 来实现该功能。
$与#之间的区别
#{} 是预编译处理, ${} 是字符串替换。Mybatis 在处理 #{} 时,会将 sql 中的 #{} 替换为 ? 号,调用 PreparedStatement 的 set 方法来赋值;Mybatis 在处理 ${} 时,就是把 ${} 替换成变量的值。使用 #{} 可以有效的防止 SQL 注入,提高系统安全性。
顺序传参的两种方式:
@Param注解传参法
<!--根据用户姓名与性别查询用户,使用@Param注解传参法-->
<select id="selectUsersAnnParam" resultType="users">
select * from users where username=#{name} and usersex=#{sex}
</select>
List<Users> selectUsersAnnParam(@Param("name") String username,@Param("sex") String usersex);