1. package com.chentianyu.service;
  2. import com.chentianyu.pojo.User;
  3. import java.util.List;
  4. public interface UserService {
  5. /**
  6. * url: /user/selectUserPage?userName=?&userSex=?&page=null
  7. */
  8. List<User> selectUserPage/*给定的参数名称去写*/(String userName,String userSex,int startRow);
  9. /**
  10. * 增加用户
  11. * /user/createUser
  12. */
  13. int createUser(User user);
  14. /**
  15. * /user/deleteUserById?userId=?
  16. */
  17. int deleteUserById(String userId);
  18. /**
  19. * 计算总行数
  20. * /user/getRowCount?userName=?userSex=?
  21. */
  22. int getRowCount(String userName,String userSex);
  23. }
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了