阶段环境初始配置
操作:windows
开发工具:eclipse+maven
数据库管理系统(DBMS):mysql
创建新工作区:CGBWORKSPACE1808+UTF-8编码
画图工具应用:FastStone Capture
数据库初始化:(准备工作)
登录 mysql (使用mysql自带客户端)
设置mysql客户端的编码: set names utf8;
执行source指令(用于执行sql文件)
例如: source d:/project.sql
基本的处理流程
然后这里我们开始创建一个maven项目,有简单maven和复杂,勾选简单就行了,这里,需要去设置一下maven项目的结构:
步骤:
**项目名->右键->properties->java build path->source->add
按照如图所示的项目基本结构进行创建,并应用保存,之后每次创建简单项目时,项目会自动创建基本结构。
可以通过order and export调整包结构顺序。
1.这一步开始之前,首先要确认一下你的eclips的maven插件的配置文件有没有配置好下载仓库和阿里云:
配置仓库的绝对路径
D:\software\repository
配置阿里云服务器
nexus-aliyun
Nexus aliyun
*
http://maven.aliyun.com/nexus/content/groups/public/
2.之后我们就可以对项目进行依赖的配置,在maven 项目里的pom.xml中添加代码:
4.0.0
com.pt
CGB-MYBATIS-01
0.0.1-SNAPSHOT
mysql
mysql-connector-java
5.1.40
org.mybatis
mybatis
3.4.6
junit
junit
4.12
log4j
log4j
1.2.17
在java/main/resource里创建一个mabatis-config.xml(核心配置文件),之后创建configs.properties文件,最后创建mapper文件夹,然后创建一个映射文件:
核心配置文件
这里最后要做的是一个商城后台管理项目,因此,我创建了一个MemberMapper.xml映射文件,并将映射文件添加到了上面代码的核心配置文件里
delete from t_members
where id=#{id}
update t_members
set password=#{array[0]}
where id=#{array[1]}
insert into t_members
(nickname,password,realname,gender,rank,
email,mobile,safequestion,safeanswer,createdTime)
values
(#{nickname},#{password},#{realname},#{gender},#{rank},
#{email},#{mobile},#{safequestion},#{safeanswer},#{createdTime})
在此之前,我们可以先做好会员信息的类,Member会员类,用来封装会员信息(跟数据库中的会员信息保持一致),注意重写toString.
写到这里,我想到了几个问题,
问题1:当我类封装好后,底层怎么才能把数据库的东西通过反射找到,并且封装到Member会员类中。??
解决:https://blog.csdn.net/surpass0728/article/details/80696931
问题2:当使用动态代理#{}和${}之后,数据会有什么不同,以及各有什么优缺点。解决:https://blog.csdn.net/lohannes/article/details/79031435
package com.pt.order.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.pt.order.entity.Order;
import com.pt.order.vo.OrderVo;
import com.pt.order.vo.SqlOrderCommand;
public interface OrderDao {
/**
* 基于id删除订单信息
* @param id
* @return 删除的行数
*/
int deleteObject(Integer id);
/**
* 基于多个id执行订单的删除操作
* 应用说明:当方法中的参数应用在动态sql时
* 1) 方法中使用了@param("参数名")注解修饰,
* 则动态sql中#{参数名}
* 2) 方法中没有,则动态sql里可以使用array作为参数接收数据
* 错误说明:
* 1)当如下方法中参数为null,或者数组长度为0时,
* 直接在动态sql中使用ids可能会有问题。
* @param ids
* @return
*/
int deleteObjectByIds(
@Param("ids") String[] ids);
/**
* @param cmd
* @return
*/
List findPageObjects(
@Param("cmd") SqlOrderCommand cmd);
/**
* 将订单的详细信息写入到数据库(对象持久化)
* @param entity (封装了订单信息的对象)
* @return (写入数据的行数)
*/
int insertObject(Order entity);
}
dao层接口的编程可以使代码更加简单,可以减少编程过程中字符串的拼接,减少错误。并可以增强代码的复用性。
package com.pt.order.vo;
import java.io.Serializable;
import java.util.Date;
import com.pt.member.entity.Member;
/**
* VO:用于封装订单以及订单相关的会员信息
* @author Administrator
*/
public class OrderVo implements Serializable{
private static final long serialVersionUID = 2586258704975775437L;
private Integer id;
/**订单编码*/
private String code;
/**商品id*/
private Integer goodsId;
/**订单总价*/
private Float totalprice;
/**订单状态*/
private Integer status;
/**订单备注*/
private String remark;
/**订单创建时间*/
private Date createdTime;
/**借助此属性封装会员信息*/
private Member member;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Integer getGoodsId() {
return goodsId;
}
public void setGoodsId(Integer goodsId) {
this.goodsId = goodsId;
}
public Float getTotalprice() {
return totalprice;
}
public void setTotalprice(Float totalprice) {
this.totalprice = totalprice;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
public Member getMember() {
return member;
}
public void setMember(Member member) {
this.member = member;
}
@Override
public String toString() {
return "OrderVo [id=" + id + ", code=" + code + ", goodsId=" + goodsId + ", totalprice=" + totalprice
+ ", status=" + status + ", remark=" + remark + ", createdTime=" + createdTime + ", member=" + member
+ "]";
}
}
先写到这里。。。。未完待续。。。