package com.chentianyu.service;import com.chentianyu.pojo.User;import java.util.List;public interface UserService {/*** url: /user/selectUserPage?userName=?&userSex=?&page=null*/List<User> selectUserPage/*给定的参数名称去写*/(String userName,String userSex,int startRow);/*** 增加用户* /user/createUser*/int createUser(User user);/*** /user/deleteUserById?userId=?*/int deleteUserById(String userId);/*** 计算总行数* /user/getRowCount?userName=?userSex=?*/int getRowCount(String userName,String userSex);}
package com.chentianyu.service.impl;
import com.chentianyu.mapper.UserMapper;
import com.chentianyu.pojo.User;
import com.chentianyu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
//切记:一定会有数据访问层的对象
@Autowired
UserMapper userMapper;
@Override
public List<User> selectUserPage(String userName, String userSex, int startRow) {
//我们的业务比较简单,但是一般最难写的地方就是这里:这种业务的逻辑判断
return userMapper.selectUserPage(userName,userSex,startRow);
}
@Override
public int createUser(User user) {
return userMapper.createUser(user);
}
@Override
public int deleteUserById(String userId) {
return userMapper.deleteUserById(userId);
}
@Override
public int getRowCount(String userName, String userSex) {
return userMapper.getRowCount(userName,userSex);
}
}
测试
我们现在用junit来测试
package test;
import com.chentianyu.pojo.User;
import com.chentianyu.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
//要想干活得启动spring容器,测试的时候能否像@Autowired一样自动注入进来
@RunWith(SpringJUnit4ClassRunner.class)//相当于启动spring容器
@ContextConfiguration(locations = {"classpath:applicationContext_mapper.xml", "classpath:applicationContext_service.xml"})
public class MyTest {
//俩个注解得到的好处就是可以使用@Autowired
@Autowired
UserService userService;
@Test
public void testSelectUserPage(){
List<User> list = userService.selectUserPage(null,null,0);//只取第一页的5条数据
list.forEach(user -> System.out.println(user));
}
}
Creating a new SqlSession
Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@46268f08]
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@5b619d14] will be managed by Spring
==> Preparing: select user_id,card_type,card_no,user_name,user_sex,user_age,user_role from user limit ?,5
==> Parameters: 0(Integer)
<== Columns: user_id, card_type, card_no, user_name, user_sex, user_age, user_role
<== Row: 01, 编号, 0101, 张三, 男, 30, 办事人员和有关人员
<== Row: 02, 编排, 0202, 李四, 男, 29, 不便分类的其他从业人员
<== Row: 03, 编号, 0303, 王五, 男, 31, 农、林、牧、渔、水利业生产人员
<== Row: 04, 编号, 0404, 赵六, 男, 34, 未知
<== Row: 05, 编号, 0505, 朱十三, 女, 33, 商业、服务业人员
<== Total: 5
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@46268f08]
Transaction synchronization committing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@46268f08]
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@46268f08]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@46268f08]
User{userId='01', cardType='编号', cardNo='0101', userName='张三', userSex='男', userAge='30', userRole='办事人员和有关人员'}
User{userId='02', cardType='编排', cardNo='0202', userName='李四', userSex='男', userAge='29', userRole='不便分类的其他从业人员'}
User{userId='03', cardType='编号', cardNo='0303', userName='王五', userSex='男', userAge='31', userRole='农、林、牧、渔、水利业生产人员'}
User{userId='04', cardType='编号', cardNo='0404', userName='赵六', userSex='男', userAge='34', userRole='未知'}
User{userId='05', cardType='编号', cardNo='0505', userName='朱十三', userSex='女', userAge='33', userRole='商业、服务业人员'}
删除一条数据
@Test
public void testDeleteUserById(){
int num = userService.deleteUserById("08");
System.out.println(num);
}
Creating a new SqlSession
Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6179e425]
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@614df0a4] will be managed by Spring
==> Preparing: delete from user where user_id=?
==> Parameters: 08(String)
<== Updates: 1
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6179e425]
Transaction synchronization committing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6179e425]
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6179e425]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6179e425]
1
Process finished with exit code 0
计算总行数
@Test
public void testGetRowCount(){
int num = userService.getRowCount(null, null);
System.out.println(num);
}
之前删除一条,总共11条
Creating a new SqlSession
Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6179e425]
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@301ec38b] will be managed by Spring
==> Preparing: select count(*) from user
==> Parameters:
<== Columns: count(*)
<== Row: 11
<== Total: 1
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6179e425]
Transaction synchronization committing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6179e425]
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6179e425]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6179e425]
11
创建数据
@Test
public void testCreateUser(){
User user = new User("13","编号","1313","哈哈","男","23","工人");
int num = userService.createUser(user);
System.out.println(num);
}
Creating a new SqlSession
Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@39a2bb97]
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@73a2e526] will be managed by Spring
==> Preparing: insert into user values(?,?,?,?,?,?,?)
==> Parameters: 13(String), 编号(String), 1313(String), 哈哈(String), 男(String), 23(String), 工人(String)
<== Updates: 1
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@39a2bb97]
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@39a2bb97]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@39a2bb97]
1
Process finished with exit code 0
这样子我们所有的业务逻辑层开发就OK了
