1、对象类有两种,一种是传给前端的VO,每个接口可能返回的不一样,可以写多个;一种是给数据库的,这种要全一点,update的时候将VO转换成info的进行update
2、mybatis中语句最后不用加分号,虽然在数据库中进行语句查询没有错误,但是mybatis中并不需要,要不然就出错了
3、针对1/2,返回给前端的VO是不同的,所以从数据库查的数据也要做区分,写多个<result>,不要传不必要的数据
4、对于禁用启用、隐藏显示这样的要设置成byte类型,比较省空间 byte-Byte-tinyint
有个问题就是从前端传过来的status为String类型,将String转为byte就很烦,我先将String转为Integer,然后再转成byte
String status = "0";
Integer status = Integer.parseInt(status);
byte ss = (byte) status.intValue();
5、记得加注解,在controller类中加@Controller,在impl实现类中加@Service,在Mapper中加@Mapper,如果在Mapper接口中没有加上@Mapper的话,就扫不到它
在我们项目中是做了个mapper扫描的配置,
@Configuration
@MapperScan(basePackages = {
"con.sdsd.sds.sd.a.dao",
"con.sdad.sda.da.b.dao"
},sqlSessionTemplateRef="**"
每当写一个module时,都需要在这里添加上,像我这种新手,就不知道!,所有要扫描包的两种方法,一种加@Mapper,一种在这里配置@MapperScan
6、术语:ddl 建表语句 dml:修改表语句
在进行数据库操作时,秉承的原则:
(1)对于新建表,要先写 drop table if exists 'table_nale'
然后再新建表 create table 'table_name'()
对于0 1的判断字符,可以用tinyint
对于时间,用timestamp
总的表的default_charset用utf8mb4
/*
database=
tablename=
*/
CREATE TABLE 'distribution_activity'(
'id' int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
'update_time' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE_TIMESTAMP COMMENT '更新时间',
'create_time' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMNET '创建时间',
'activity_id' varchar(32) NOT NULL COMMNET '分销渠道id',
PRIMARY_KEY('id'), 写上主键
KEY 'idx_uptime'('update_time') , (记得加逗号)
KEY 'idx_crtime'('create_time') 增加这两个索引,因为查询的时候经常会按照时间进行查询,会快
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='分销活动'
(2)在原有表上增加一列
alter table t_iteminfo add is_image tinyint default 1;(设置了默认值)
(3)在表里插入一条数据
插数据的时候要主要先delete,防止重复插入错误
delete from t_resource where id=27;
insert into t_resource (id,resource_code,order_no) values (1,2,3)
(4)在表里更新数据就直接更新即可
循环插入列表
<!-- 插入信息列表 -->
<insert id="insertItem" parameterType="java.util.List">
insert into t_item_image_url
(
item_id,
image_text,
article_url,
)
values
<foreach collection="list" item="item" index= "index" separator =",">
(
#{item.itemId},
#{item.imageText},
#{item.articleUrl}
)
</foreach>
</insert>
(item是每次迭代的代号,所以下面要带上前置,item的ItemId,要不然不知道ItemId是啥)