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

来源:互联网 发布:学校网上缴费软件 编辑:程序博客网 时间:2024/05/01 06:28

个人知乎

基础三-数据库基础

业务字段设计

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

数据库创建

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@Mapperpublic 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
原创粉丝点击