个人知乎 ##基础三-数据库基础

个人知乎

基础三-数据库基础

业务字段设计

业务设计->数据表->表间关系
做一些冗余来加快查询

数据库创建

MySQL Workbench:本地调试界面工具,复制SQL语句
服务器上:拷贝SQL语句

CRUD操作

INSERT:
    insert into Table values(..);
    insert into Table select..
SELECT:
    select .. from Table where ...
UPDATE:
    update Table set ..=.. where ...
DELETE:
    delete from Table where...

MyBatis集成

JDBC:早期操作数据库的方式,需要加载连接等操作
框架:只需要关心sql逻辑部分
配置文件:maven项目在pom.xml导入sql驱动包,mybatis包
    properties配置和数据库关联,账号密码,注意root账号,密码为空
    mybatis配置连接时长,ORM驼峰自动转换等
DAO:数据库操作接口,自定义接口来操纵数据库,封装sql语句,注意目录层次,DAO层    一定要在启动类所在目录下面

注解和XML控制sql查询

注解:
    控制简单sql语句
    @Mapper注解会自动让mybatis实现接口
//myBatis会自动依赖注入实现定义的DAO接口
//DAO,写带sql注解的interface
@Mapper
public interface UserDAO{
    //使用注解写sql语句,注意拼接时候的空格
    //因为是接口,切忌不能写{}
    @Insert({"insert into ", TABLE_NAME, "(", INSERT_FIELDS,
            ") values (#{name},#{password},#{salt},#{headUrl})"})
    public abstract int addUser(User user);

    @Select({"select ", SELECT_FIELDS, " from ", TABLE_NAME, " where id=#{id}"})
    public abstract User selectById(int id);

    @Update({"update ", TABLE_NAME, " set password=#{password} where id=#{id}"})
    public abstract void updatePassword(User user);

    @Delete({"delete from ", TABLE_NAME, " where id=#{id}"})
    public abstract void deleteById(int id);
}
xml配置:
    在resources下创建和DAO相同目录,创建与DAO.java同名.xml
    利用xml实现复杂的sql语句:根据参数做分支逻辑等
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.nowcoder.dao.QuestionDAO">
    <sql id="table">question</sql>
    <sql id="selectFields">id, title, content, comment_count,created_date,user_id
    </sql>
    <select id="selectLatestQuestions" resultType="com.nowcoder.model.Question">
        SELECT
        <include refid="selectFields"/>
        FROM
        <include refid="table"/>

        <if test="userId != 0">
            WHERE user_id = #{userId}
        </if>
        ORDER BY id DESC
        LIMIT #{offset},#{limit}
    </select>
</mapper>

ViewObject和DateTool

ViewObject
    每个VO打包多个相关对象,如User,Question等
    一个VO序列传递给html,做页面渲染
public class ViewObject {
    private Map<String, Object> objs = new HashMap<String, Object>();
    public void set(String key, Object value) {
        objs.put(key, value);
    }

    public Object get(String key) {
        return objs.get(key);
    }
}

freemarker模板

.ftl格式文件
ftl语法     
日期格式化:
    date: 只显示日期,不显示时间.
    如${createTime?date} 或${createTime?date('yyyy-MM-dd')}
    time: 只显示时间,不显示日期
    如${createTime?time} 或${createTime?time('hh:mm:ss')}
    datetime: 时间和日期同时显示
    如${createTime} 或${createTime?datetime('yyyy-MM-dd hh:mm:ss')}或${createTime?string('yyyy-MM-dd hh:mm:ss')}

首页开发

复杂页面拆分

数据显示
    velocity语句传递ViewObject对象,显示在html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值