移动商城第三篇【搭建Mybatis和Spring环境、编写Dao、Service在Core模块】

2018-01-22 10:59:25来源:oschina作者:zhong1232人点击

分享

Mybatis和Spring环境搭建

由于我们的所编写的dao层、service代码可能前台和后台都需要用到的,因此我们把环境搭建在core模块中


逆向工程

首先,我们要做的就是品牌管理,我们首先来看看原型界面的的品牌管理


这里写图片描述


涉及到的数据库表在我们的powerdesigner中就已经定义过了


这里写图片描述


我们来看一下对应数据库表的数据


这里写图片描述


添加逆向工程插件
zhongfucheng


org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2

true
true




编写逆向工程文件
<?xml version="1.0" encoding="UTF-8" ?>





















生成的文件:


这里写图片描述


sqlMapping映射文件也算是一种资源文件把,因此我把它移到resources中了


这里写图片描述


编写Mybatis配置文件

sqlMapConfig.xml






创建beans.xml文件 <?xml version="1.0" encoding="UTF-8"?>
添加log4j

log4j.properties

log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG Dao层
编写Dao接口 interface EbBrandDao {void saveBrand(EbBrand brand);
EbBrand getBrandById(Long brandId);
void updateBrand(EbBrand brand);
void deleteBrand(Long brandId);
List selectBrand();
List selectBrandByName(String brandName);
} 编写Dao实现 /** * 继承SqlSessionDaoSupport能够得到sessionFactory的引用,非常方便! */
@Repository
public class EbBrandDaoImpl extends SqlSessionDaoSupport implements EbBrandDao {
String nameSpace = "com.rl.ecps.sqlMap.EbBrandMapper.";
public void saveBrand(EbBrand brand) {
this.getSqlSession().insert(nameSpace + "insert", brand);
}
public EbBrand getBrandById(Long brandId) {
return this.getSqlSession().selectOne(nameSpace + "selectByPrimaryKey", brandId);
}
public void updateBrand(EbBrand brand) {
/** * updateByPrimaryKeySelective和updata的区别: * 一个是动态SQL,一个是静态SQL。这里就使用动态SQL比较好。因为是更新操作 */
this.getSqlSession().update(nameSpace + "updateByPrimaryKeySelective", brand);
}
public void deleteBrand(Long brandId) {
this.getSqlSession().delete(nameSpace + "deleteByPrimaryKey", brandId);
}
public List selectBrand() {
return this.getSqlSession().selectList(nameSpace+"selectBrand");
}
public List selectBrandByName(String brandName) {
return this.getSqlSession().selectList(nameSpace+"selectBrandByName", brandName);
}
}

mybatis插件只有最后两个方法没有帮我们自动生成,其他的SQL语句都自动生成了。



编写Service
Service接口 public interface EbBrandService {
void saveBrand(EbBrand brand);
EbBrand getBrandById(Long brandId);
void updateBrand(EbBrand brand);
void deleteBrand(Long brandId);
List selectBrand();
List selectBrandByName(String brandName);
}
Service实现 package com.rl.ecps.service.impl;
import com.rl.ecps.dao.EbBrandDao;
import com.rl.ecps.dao.impl.EbBrandDaoImpl;
import com.rl.ecps.model.EbBrand;
import com.rl.ecps.service.EbBrandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/** * Created by ozc on 2017/8/26. */
@Service
public class EbBrandServiceImpl implements EbBrandService {@Autowired
private EbBrandDao brandDao;
public void saveBrand(EbBrand brand) {
brandDao.saveBrand(brand);
}
public EbBrand getBrandById(Long brandId) {
return brandDao.getBrandById(brandId);
}
public void updateBrand(EbBrand brand) {
brandDao.updateBrand(brand);
}
public void deleteBrand(Long brandId) {
brandDao.deleteBrand(brandId);
}
public List selectBrand() {
return brandDao.selectBrand();
}
public List selectBrandByName(String brandName) {
return brandDao.selectBrandByName(brandName);
}
} 测试Service

在idea中,我们新建一个test目录


这里写图片描述


对着我们的serviceImpl使用快捷键ctrl+shift+t


这里写图片描述


idea就会帮我们自动把想要测试的方法把相关的目录创建出来了


这里写图片描述


我们在插入数据的时候,记得要改写SQL语句,因为默认是没有主键的。下面就是我们把在主键列上使用自动增长



select seqbrandid.nextval from dual
insert into EB_BRAND (BRAND_ID, BRAND_NAME, BRAND_DESC,
IMGS, WEBSITE, BRAND_SORT
)
values (#{brandId,jdbcType=DECIMAL}, #{brandName,jdbcType=VARCHAR}, #{brandDesc,jdbcType=VARCHAR},
#{imgs,jdbcType=VARCHAR}, #{website,jdbcType=VARCHAR}, #{brandSort,jdbcType=DECIMAL}
)

插入成功


这里写图片描述

微信扫一扫

第七城市微信公众平台