前面的s是数据库的别名,不加别名那么就需要通过数据库全名调用里面的字段,因为这是涵盖了两张表,后面的是因为前面设置了别名标签,所以将as隐藏了,可以直接通过java内的属性进行赋值,如果不加入,是找不到这些字段的
比如要 有一个类是Items类,里面有一个 List<Detail> detailList属性,映射可以使用 resultMap标签,
<resultMap id="ItemsMap" type="com.xxxx.Items">
<id column="xx" property="xx" /> <!-- 普通字段的映射 -->
<result column="xxx" property="xxx" />
..........................................
<collection property="detailList" ofType="com.xxx.Detail"> <!-- 集合字段的映射 -->
<id column="detail_id" property="id" />
<result column="items_id" property="itemsId" />
<result column="items_num" property="itemsNum" />
</collection>
</resultMap>。
在你的select中引用这个resultMap
<select id = "selectItems" resultMap="ItemsMap">
......
如果说错了,请指正
不多说
如果 是基本类型,或者是java自身的引用类型,在mybatis 运行时,会自动的进行匹配,如果是你自己声明的一个类型,因为可能在引入的jar包中有同名的类,所以你需要制定,这个时候的类型是什么
SuccessKilled里面有两种seckill_id,一种是SuccessKilled本身的对象的seckill_id,另一种是SuccessKilled里面定义的其他类(这里是Seckill)的seckill_id,若是使用非本身类的替换名,必须在后面加上这个"seckill.seckill_id",一种语法吧,我是这么理解的。
update和insert的返回值int是对sql中该sql语句影响的行数,比如你插入一条数据,成功的话sql会提示1行代码收影响,返回的int是1
需要配置resultType类型的。
String findNameById(@Param("seckillId") String seckillId);
<select id="findNameById" resultType="String"> SELECT s.name FROM seckill s WHERE s.seckill_id = #{seckillId} </select>
@Test public void testFindNameById() { String id = "c18c12a838c311e89fa754ee75c6aeb0"; String name = seckillMapper.findNameById(id); log.info("name:{}", name); }
执行结果:INFO cn.colg.dao.SeckillMapperTest - name:1000元秒杀iphone6
兄弟,应该用inner join内连接,这样两个表中都只有满足连接条件的才被保留下来作为查询结果。如果用left join(左外连接),那么左表中未满足连接条件的内容依旧会被保留,所以映射失败。
实际开发中碰到过该问题,也是直接带上了路径。可能是扫描失败的原因吧
这不都配置的了吗
<!--配置全局属性--> <settings> <!--使用jdbc的getGeneratedKeys获取数据库自增主键值--> <setting name="useGeneratedKeys" value="true"/> <!--使用列别名替换列名 默认:true select name as title from table --> <setting name="useColumnLabel" value="trure"/> <!--开启驼峰命名转换: Table(create_time) -> Entity(createTime)--> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>
这是数据库中的知识,列标签就是数据库中的字段名,列别名就是查询语句查询字段的时候给字段自定义的名称。
把数据库的sql一起发出来嘛
mysql独有的
额 我也有这个疑问
可以的,我试过
<!--添加连接Mysql所需要的依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> <scope>runtime</scope> </dependency>
新建一个类,包含两个表的所有字段,然后返回类型指定为这个类
看东西能不能看仔细点 namespace