maven映射语句:参数解析与转换
:传入对象,参数引用对象的属性,名字保持一致
<select id="setWish" resultType="com.pojo.User" parameterType="com.pojo.User">
update students set Wish=#{Wish} where StuNum=#{StuNum}
</select>
Mybatis: mapper文件开头的namespace属性
<!-- mapper 为根元素节点, 一个namespace对应一个dao -->
<!--
Mapper元素只有一个属性namespace,它有两个作用:
一是用于区分不同的mapper(在不同的mapper文件里,子元素的id可以相同,mybatis通过namespace和子元素的id联合区分)
二是与接口关联(应用程序通过接口访问mybatis时,mybatis通过接口的完整名称查找对应的mapper配置,因此namespace的命名务必小心一定要某接口同名)。
-->
<mapper namespace="com.dy.dao.UserDao">
之前dao层负责数据库交互,dao接口定义方法,dao实现中即成sql语句
现在mybatis中可以只写接口,实现实际上已经在映射文件中了,只需
- 在mapper的namespace中指明对应的dao接口类
- 保证接口类中方法与mapper中映射语句的id相同
然后就不用写实现类了,用到的时候直接按id调用方法就好 - 在mybatis中这个Dao层接口的作用,
就是作为mapper的接受类
UserDao mapper = session.getMapper(UserDao.class);
(然后最为一个实现类使用):
User user = mapper.findById(20);
更多配置文件相关的信息(参数们:
https://www.jianshu.com/p/d356d0ba6298
bugs:仔细看打印的错误啊
关于:
### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating interface com.pojo.UserDao with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.pojo.UserDao.<init>()
### The error may exist in mapper/User.xml
### The error may involve com.pojo.UserDao.findById
### The error occurred while handling results
### SQL: select * from students where StuNum=?
因为第一句我就一直在UserDao和映射文件里找,没仔细看下面那几句:
The error occurred while handling results
!!!是结果映射出的问题啊!dao层没问题!
然后发现是<typeAlias type="com.pojo.UserDao" alias="User"/>
……别名设置这里笔误了……(因该是com.pojo.User的
junit单元测试
目前:pojo那几个不用,dao接口也是简单的sql映射,也不用测
真要用单元测试的话,要写一些更复杂的业务逻辑吧(怪不得有人说java干了几年就写了CRUD
但是为了联系测试而写逻辑,emmm,不跟以前看的例子差不多嘛……
算辽
收藏夹junit里有几个找好的网页,啥时候想写了可以参考
网友评论