项目所需技术
- java基础,java反射,泛型
- html,css,JavaScript,jquery,bootstrap,layui
- Servlet,过滤器,监听器,jstl,el表达式,jsp,mysql,jdbc,xml,javaweb
- springmvc,mybatis,spring三大开发框架
- Maven(聚合ssm),junit单元测试
- jersy,图片服务器搭建(fastDFS)
- idea开发工具,powerdesigner数据库建模,Navicat连接数据库工具
- amchart报表开发
本项目致力于为没有项目经验的人来提供的第一个项目学习,本项目是实战项目,融入了多年的开发经验和思想,学完本项目可以获得项目开发的能力,可以找到java初级开发工程师的工作
搭建数据库环境
创建数据库
本次项目我们使用的是mysql,启动mysql服务器创建数据库ham
设计数据库模型
/*==============================================================*/
/* DBMS name: MySQL 5.0 */
/* Created on: 2019/10/12 9:55:56 */
/*==============================================================*/
drop table if exists ALBUM;
drop table if exists COMMENT;
drop table if exists MTYPE;
drop table if exists SONG;
drop table if exists SONGER;
drop table if exists TX_USER;
/*==============================================================*/
/* Table: ALBUM */
/*==============================================================*/
create table ALBUM
(
AID int(10) not null auto_increment,
ANAME varchar(100),
PIC varchar(200),
COMPANY varchar(50),
PDATE date,
LANG varchar(50),
primary key (AID)
);
/*==============================================================*/
/* Table: COMMENT */
/*==============================================================*/
create table COMMENT
(
COMMENT_ID int(10) not null auto_increment,
COM_COMMENT_ID int(10),
USER_ID int(10),
COMMENT_CONTENT text,
Z_COUNT int(10),
primary key (COMMENT_ID)
);
/*==============================================================*/
/* Table: MTYPE */
/*==============================================================*/
create table MTYPE
(
TID int(10) not null auto_increment,
TNAME varchar(50),
TDESC varchar(100),
primary key (TID)
);
/*==============================================================*/
/* Table: SONG */
/*==============================================================*/
create table SONG
(
SID int(10) not null auto_increment,
TID int(10),
SRID int(10),
AID int(10),
SNAME varchar(50),
PIC varchar(100),
MP3 varchar(100),
LRC text,
IS_HOT int(2),
IS_NEW int(2),
PTIMES int(100),
AUDIT_STATUS int(2),
SHOW_STATUS int(2),
primary key (SID)
);
/*==============================================================*/
/* Table: SONGER */
/*==============================================================*/
create table SONGER
(
SRID int(10) not null auto_increment,
TID int(10),
SRNAME varchar(20),
INTRO text,
AREA varchar(20),
PIC varchar(100),
IS_HOT int(2),
primary key (SRID)
);
/*==============================================================*/
/* Table: TX_USER */
/*==============================================================*/
create table TX_USER
(
USER_ID int(10) not null auto_increment,
USERNAME varchar(20),
PASSWORD varchar(20),
QQ varchar(20),
EMAIL varchar(20),
NICK varchar(20),
TEL varchar(20),
REG_TIME date,
primary key (USER_ID)
);
输入数据库
maven环境搭建
解压maven3.5.3
设置maven本地仓库
打开settings.xml修改本地仓库的位置
idea的配置
jdk配置
设置jdk1.8
配置maven
在idea中配置好maven的HOME和 settings.xml
maven项目
互联网的特点是后台和前台都需要开发:
前台:互联网用户访问的系统,对性能要求比较高。
后台:管理员访问的系统
1、Maven的依赖管理在架构中的使用
Maven:pom(Project Object Model),上图体现了maven的依赖管理,maven的依赖管理同样也可以依赖第三方的jar包。
Maven的项目构建在架构的使用
项目的构建
测试主机:和生产环境一致,Linux,weblogic,git,maven,jdk,Jenkins
Source:必须要符合maven的目录结构
Project
Src/main/java
Src/main/resources
Src/test/java
Src/test/resources
Pom.xml
mvn clean package
创建工程
ham-parent:父工程
ham-portal: 前台模块
ham-core: 底层公用的模块
ham-console: 后台模块
ham-file: 文件服务器模块
加入pom文件的依赖
子模块要继承父模块,父模块要聚合子模块
ham-parent的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.tx.music</groupId>
<artifactId>ham-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>ham-core</module>
<module>ham-console</module>
<module>ham-portal</module>
<module>ham-file</module>
</modules>
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!--连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!--文件上传处理-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>${commons-lang.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring.version>5.0.2.RELEASE</spring.version>
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.12</log4j.version>
<mysql.version>5.1.6</mysql.version>
<mybatis.version>3.4.5</mybatis.version>
<aspectj.version>1.6.8</aspectj.version>
<junit.version>4.12</junit.version>
<servlet.version>2.5</servlet.version>
<jsp.version>2.0</jsp.version>
<jstl.version>1.2</jstl.version>
<druid.version>1.1.10</druid.version>
<fastjson.version>1.2.47</fastjson.version>
<commons-io.version>2.0.1</commons-io.version>
<commons-lang.version>2.6</commons-lang.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<commons-codec.version>1.10</commons-codec.version>
<mybatis-spring.version>1.3.0</mybatis-spring.version>
<jersey.version>1.2</jersey.version>
</properties>
</project>
ham-core的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ham-parent</artifactId>
<groupId>cn.tx.music</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ham-core</artifactId>
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<!-- log end -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</dependency>
<!--连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<!--文件上传处理-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.6</version>
</dependency>
</dependencies>
</project>
ham-console的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ham-parent</artifactId>
<groupId>cn.tx.music</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ham-console</artifactId>
<packaging>war</packaging>
<name>ham-console</name>
<dependencies>
<dependency>
<groupId>cn.tx.music</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>ham-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
</dependency>
</dependencies>
</project>
ham-portal的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ham-parent</artifactId>
<groupId>cn.tx.music</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ham-portal</artifactId>
<packaging>war</packaging>
<name>ham-portal</name>
<dependencies>
<dependency>
<groupId>cn.tx.music</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>ham-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>
</project>
搭建mybatis和spring的架构
建包
在ham-core中
1.java资源包下创建包如图所示
2. resources资源包下引入
日志文件log4j.properties
数据库连接文件:db.properties
逆向工程
在core工程中加入配置文件generatorConfig.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="mybatisGenerator" >
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/ham?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true" userId="root"
password="root">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="cn.tx.model"
targetProject=".\ham-core\src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="mapper"
targetProject=".\ham-core\src\main\resources">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="cn.tx.dao"
targetProject=".\ham-core\src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table tableName="songer" enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"/>
<!-- 有些表的字段需要指定java类型
<table schema="" tableName="">
<columnOverride column="" javaType="" />
</table> -->
</context>
</generatorConfiguration>
在类中创建逆向工程的执行类
public class Generator {
public void generator() throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
/**指向逆向工程配置文件*/
File configFile = new File("hami_core/src/main/resources/generatorConfig.xml");
ConfigurationParser parser = new ConfigurationParser(warnings);
Configuration config = parser.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
callback, warnings);
myBatisGenerator.generate(null);
}
public static void main(String[] args) throws Exception {
try {
Generator generatorSqlmap = new Generator();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行逆向工程后,就会我们的项目中就会生成下面的代码
逆向工程做完后我们已经有了数据层和model
创建Service层
在service包中创建接口
public interface SongerService {
public void addSonger(Songer songer);
public Songer getSongerById(int songId);
public void updateSonger(Songer songer);
public void delSongerById(int songId);
}
在service.impl中创建接口的实现类
@Service
public class SongerServiceImpl implements SongerService {
@Autowired
private SongerMapper songerMapper;
@Override
public void addSonger(Songer songer) {
songerMapper.insert(songer);
}
@Override
public Songer getSongerById(int songId) {
return songerMapper.selectByPrimaryKey(songId);
}
@Override
public void updateSonger(Songer songer) {
songerMapper.updateByPrimaryKeySelective(songer);
}
@Override
public void delSongerById(int songId) {
songerMapper.deleteByPrimaryKey(songId);
}
}
创建mybatis的全局配置文件
在resources里面创建sqlMapConfig.xml
注册映射配置文件SongerMapper.xml
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<mappers>
<mapper resource="mapper/SongerMapper.xml"/>
</mappers>
</configuration>
创建spring的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:component-scan base-package="cn.tx"></context:component-scan>
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${driverClass}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${uname}"></property>
<property name="password" value="${pword}"></property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:sqlMapConfig.xml"></property>
</bean>
<bean id="mapperScan" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<property name="basePackage" value="cn.tx.dao"></property>
</bean>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
<tx:method name="remove*" propagation="REQUIRED"/>
<tx:method name="get" read-only="true"></tx:method>
<tx:method name="select" read-only="true"></tx:method>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor advice-ref="txAdvice" pointcut="execution(* cn.tx.service..*.*(..))"></aop:advisor>
</aop:config>
</beans>
junit generator的安装
首先,按照一般的规范来说,最后生成的测试类的路径,应该是在Test文件夹下,Test文件夹应该是与java文件夹一级的。例如下图这样。
下面就是设置的过程,首先,点击左上角的File—>Setting...
然后找到Other Settings—>Junit Generator这个选项4
然后修改这两个位置,其中Output Path可以修改为
${SOURCEPATH}/../test/${PACKAGE}/${FILENAME}。
如何这个设置之后生成的Test测试类路径还是不对,可以根据这个路径来推算
在测试资源包内测试整合
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:beans.xml"})
public class SongerTest {
@Autowired
SongerService songerService;
@Test
public void testAdd(){
Songer s = new Songer();
s.setArea("北京");
s.setIntro("很好");
s.setIsHot(1);
s.setPic("zz");
s.setSrname("阳哥");
songerService.addSonger(s);
}
@Test
public void getById(){
Songer songer = songerService.getSongerById(1);
System.out.println(songer);
}
@Test
public void updateSonger(){
Songer songer = songerService.getSongerById(1);
songer.setSrname("最亮的仔");
songerService.updateSonger(songer);
}
@Test
public void delSongerById(){
songerService.delSongerById(1);
}
}