MyBatis第二章(1)

目录

1.每天学习两小时

2.先让大家了解一下配置文件信息的排序:我们在自己配置的时候,一定要选择按照下面的顺序去配置文件信息,否则就是报错了 !

3.第二次学习我们主要去学习配置信息中的内容(mybatis 中文网)第一次我们学习的是入门中的内容!

4.进行映射!

 5.多参数传参方式

对象形式去设置属性的值

使用Map的方式去put 一对值

使用顺序传参:

也是使用顺序传参:

使用的是@Parm传参

$与#之间的区别

顺序传参的两种方式:

@Param注解传参法


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 resultMap
resultType: 返回的是一个对象。当数据库中的字段与实体类中的属性如果不一致,那么就会
导致不一致的属性获取的值是 NULL 。同样,如果在查询较为复杂的情况下,例如多表查询,
也无法实现一个一一映射性的关系。
resultMap: 如果查询的结果非常复杂,而且出现了数据库中的字段与实体类中的属性不一致的
情况,再有想要实现复杂的关系查询 ( 一对多 多对一等关系 ) 时,使用 resultMap 再合适不过
了。
以上二者不能够同时存在。

 5.多参数传参方式

  1. 对象形式去设置属性的值

  2. 使用Map的方式去put 一对值

  3. 使用顺序传参:

  4. 也是使用顺序传参:

  5. 使用的是@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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值