ssm 整合

ssm

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>com.asaawan</groupId>
    <artifactId>ssm</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>../ssm_controller</module>
        <module>../ssm_service</module>
        <module>../ssm_mapper</module>
        <module>../ssm_pojo</module>
    </modules>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <spring.version>5.1.9.RELEASE</spring.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <!--创建多环境-->
    <profiles>
        <!--定义具体的环境:生产环境-->
        <profile>
            <!--定义环境对应的唯一名称-->
            <id>pro_env</id>
            <!--定义环境中专用的属性值-->
            <properties>
                <jdbc.url>jdbc:mysql://192.168.0.1:3306/ssm_db</jdbc.url>
            </properties>
        </profile>
        <!--定义具体的环境:开发环境-->
        <profile>
            <id>dev_env</id>
            <properties>
                <jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url>
            </properties>
            <!--设置默认启动-->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
    </profiles>

    <dependencyManagement>
        <dependencies>
            <!--添加自己的工程依赖-->
            <!--添加service-->
            <dependency>
                <groupId>com.asaawan</groupId>
                <artifactId>ssm_service</artifactId>
                <version>${project.version}</version>
            </dependency>
            <!--添加mapper-->
            <dependency>
                <groupId>com.asaawan</groupId>
                <artifactId>ssm_mapper</artifactId>
                <version>${project.version}</version>
            </dependency>
            <!--添加pojo-->
            <dependency>
                <groupId>com.asaawan</groupId>
                <artifactId>ssm_pojo</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!--spring环境-->
            <!--spring环境-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>

            <!--mybatis环境-->
            <!--mybatis环境-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.3</version>
            </dependency>
            <!--mysql环境-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>
            <!--spring整合jdbc-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!--spring整合mybatis-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>2.0.3</version>
            </dependency>
            <!--druid连接池-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.16</version>
            </dependency>
            <!--分页插件坐标-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>5.1.2</version>
            </dependency>

            <!--springmvc环境-->
            <!--springmvc环境-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!--jackson相关坐标-->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.9.0</version>
            </dependency>
            <!--servlet环境-->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>

            <!--其他组件-->
            <!--其他组件-->
            <!--junit单元测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <!--spring整合junit-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!--上传文件-->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.1</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <!--插件-->
        <pluginManagement>
            <plugins>
                <!-- tomcat插件控制 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!--端口控制-->
                        <port>80</port>
                        <!--虚拟目录-->
                        <path>/</path>
                        <!--编码(get请求方式)-->
                        <uriEncoding>UTF-8</uriEncoding>
                    </configuration>
                </plugin>

                <!--maven 设置跳过测试-->
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.21.0</version>
                    <configuration>
                        <!--设置跳过测试-->
                        <!--<skipTests>true</skipTests>-->
                        <!--包含指定的测试用例-->
                        <!--<includes>
                            <include>**/User*Test.java</include>
                        </includes>-->
                        <!--排除指定的测试用例-->
                        <!--<excludes>
                            <exclude>**/User*Test.java</exclude>
                        </excludes>-->
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <!--配置资源文件对应的信息-->
        <resources>
            <resource>
                <!--设定配置文件对应的位置目录,支持使用属性动态设定路径-->
                <directory>${project.basedir}/src/main/resources</directory>
                <!--开启对配置文件的资源加载过滤-->
                <filtering>true</filtering>
            </resource>
        </resources>

        <!--配置测试资源文件对应的信息-->
        <testResources>
            <testResource>
                <directory>${project.basedir}/src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>
    </build>
</project>

ssm_controller

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>
        <groupId>com.asaawan</groupId>
        <artifactId>ssm</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../ssm/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ssm_controller</artifactId>
    <packaging>war</packaging>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <!--导入service-->
        <dependency>
            <groupId>com.asaawan</groupId>
            <artifactId>ssm_service</artifactId>
        </dependency>

        <!--springmvc环境-->
        <!--springmvc环境-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>
        <!--jackson相关坐标-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <!--servlet环境-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <!--上传文件-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- tomcat插件控制 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

spring-mvc.xml 配置

<?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:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 开启 mvc 注解驱动 -->
    <mvc:annotation-driven/>

    <!-- 将 controller 交由 spring mvc 管理-->
    <context:component-scan base-package="com.asaawan.controller"/>

    <!--解决使用 form-data 传递参数后端接收不到的问题-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
</beans>

web.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

    <!-- 加载 applicationContext-* 配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext-*.xml</param-value>
    </context-param>

    <!--启动服务器时,通过监听器加载spring运行环境-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- spring 过滤添加 utf-8 编码格式-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- spring mvc 配置 servlet -->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:spring-mvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <!--不拦截 jsp-->
        <url-pattern>/</url-pattern>
        
        <!--拦截所有-->
        <!--<url-pattern>/*</url-pattern>-->
    </servlet-mapping>
</web-app>

UserController 配置

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping
    public Result save(User user) {
        boolean flag = userService.save(user);
        return flag ? new Result(Code.SAVE_SUCCESS) : new Result(Code.SAVE_ERROR);
    }

    @PutMapping
    public Result update(User user) {
        boolean flag = userService.update(user);
        return flag ? new Result(Code.UPDATE_SUCCESS) : new Result(Code.UPDATE_ERROR);
    }

    @DeleteMapping("/{uuid}")
    public Result delete(@PathVariable Integer uuid) {
        boolean flag = userService.delete(uuid);
        return flag ? new Result(Code.DELETE_SUCCESS) : new Result(Code.DELETE_ERROR);
    }

    @GetMapping("/{uuid}")
    public Result get(@PathVariable Integer uuid) {
        if(true){throw new CommonException("查询数据失败,请联系管理员!",Code.GET_ERROR);
        }
        User user = userService.get(uuid);
        return user != null ? new Result(Code.GET_SUCCESS, user) : new Result(Code.GET_ERROR);
    }

    @GetMapping("/{page}/{size}")
    public Result getAll(@PathVariable Integer page, @PathVariable Integer size) {
        PageInfo<User> info = userService.getAll(page, size);
        return info != null ? new Result(Code.GET_SUCCESS, info) : new Result(Code.GET_ERROR);
    }

    @PostMapping("/login")
    public Result login(String username, String password) {
        User user = userService.login(username, password);
        return user != null ? new Result(Code.GET_SUCCESS, user) : new Result(Code.GET_ERROR);
    }
}

封装返回结果

public class Result {

    private Integer code;
    private Object data;
    private String message;

    public Result(Integer code) {
        this.code = code;
    }

    public Result(Integer code, Object data) {
        this.code = code;
        this.data = data;
    }

    public Result(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    public String toString() {
        return "Result{" +
                "code='" + code + '\'' +
                ", data=" + data +
                ", message='" + message + '\'' +
                '}';
    }
}

自定义状态码

public class Code {

    /**
     * 直接返回 true:1 or false:0
     */
    public static final Integer CODE_TRUE = 1;
    public static final Integer CODE_FALSE = 0;

    /**
     * 操作结果编码
     */
    public static final Integer SAVE_SUCCESS = 20011;
    public static final Integer UPDATE_SUCCESS = 20021;
    public static final Integer DELETE_SUCCESS = 20031;
    public static final Integer GET_SUCCESS = 20041;

    public static final Integer SAVE_ERROR = 20010;
    public static final Integer UPDATE_ERROR = 20020;
    public static final Integer DELETE_ERROR = 20030;
    public static final Integer GET_ERROR = 20040;

    /*
     * 系统错误编码
     *
     * 操作权限编码
     *
     * 校验结果编码
     *
     */
}

自定义异常

public class CommonException extends RuntimeException{

    private Integer code;

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public CommonException(Integer code) {
        super();
        this.code=code;
    }

    public CommonException(String message, Integer code) {
        super(message);
        this.code=code;
    }

    public CommonException(String message, Throwable cause, Integer code) {
        super(message, cause);
        this.code=code;
    }

    public CommonException(Throwable cause, Integer code) {
        super(cause);
        this.code=code;
    }

    protected CommonException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, Integer code) {
        super(message, cause, enableSuppression, writableStackTrace);
        this.code=code;
    }
}

自动拦截 Controller 异常

@ControllerAdvice
public class ProjectExceptionAdvice {

    @ExceptionHandler(CommonException.class)
    @ResponseBody
    //对出现异常的情况进行拦截,并将其处理成统一的页面数据结果格式
    public Result doCommonException(CommonException ce){
        return new Result(ce.getCode(),ce.getMessage());
    }
}

ssm_service

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>
        <groupId>com.asaawan</groupId>
        <artifactId>ssm</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../ssm/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ssm_service</artifactId>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <!--导入mapper-->
        <dependency>
            <groupId>com.asaawan</groupId>
            <artifactId>ssm_mapper</artifactId>
        </dependency>

        <!--spring环境-->
        <!--spring环境-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>

        <!--其他组件-->
        <!--其他组件-->
        <!--junit单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        
        <!--spring整合junit-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
    </dependencies>
</project>

applicationContext-service 配置

<?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:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
        https://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--开启 bean 注解驱动-->
    <context:component-scan base-package="com.asaawan.service"/>

    <!--开启事务注解驱动-->
    <tx:annotation-driven transaction-manager="txManger"/>

    <!-- 配置事务管理 -->
    <bean id="txManger"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
</beans>

UserService 配置

@Transactional(readOnly = true)
public interface UserService {
    /**
     * 存储数据
     * @param user user
     */
    @Transactional(readOnly = false)
    public boolean save(User user);

    /**
     * 更新数据
     * @param user user
     */
    @Transactional(readOnly = false)
    public boolean update(User user);

    /**
     * 删除数据
     * @param uuid uuid
     */
    @Transactional(readOnly = false)
    public boolean delete(Integer uuid);

    /**
     * 根据 uuid 获取数据
     * @param uuid uuid
     * @return 用户数据
     */
    public User get(Integer uuid);

    /**
     * 获取全部数据
     * @return 用户列表
     */
    public PageInfo<User> getAll(Integer page, Integer size);

    /**
     * 根据用户名和密码获取用户数据
     * @param username 用户名
     * @param password 密码
     * @return 返回符合条件的用户数据
     */
    public User login(String username,String password);
}

UserServiceImpl 配置

@Service("userService")
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public boolean save(User user) {
        boolean flag = userMapper.save(user);
        return flag;
    }

    @Override
    public boolean update(User user) {
        boolean flag = userMapper.update(user);
        return flag;
    }

    @Override
    public boolean delete(Integer uuid) {
        boolean flag = userMapper.delete(uuid);
        return flag;
    }

    @Override
    public User get(Integer uuid) {
        return userMapper.get(uuid);
    }

    @Override
    public PageInfo<User> getAll(Integer page, Integer size) {
        PageHelper.startPage(page, size);
        List<User> users = userMapper.getAll();
        return new PageInfo<User>(users);
    }

    @Override
    public User login(String username, String password) {
        return userMapper.getByUsernameAndPassword(username, password);
    }
}

UserServiceTest 配置

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:applicationContext-service.xml", "classpath*:applicationContext-mapper.xml"})
public class UserViceTest {

    @Autowired
    private UserService userService;

    @Test
    public void testSave() {
        User user = userService.get(1);
        user.setUuid(null);
        user.setUserName("阎罗天子");
        user.setRealName("燕十三");
        System.out.println(user);
        userService.save(user);
    }

    @Test
    public void testUpdate() {
        User user = userService.get(2);
        user.setPassWord("123321");
        userService.update(user);
    }

    @Test
    public void testDelete() {
        userService.delete(5);
    }

    @Test
    public void testGet() {
        User user = userService.get(1);
        System.out.println(user);
    }

    @Test
    public void testGetAll() {
        PageInfo<User> info = userService.getAll(3, 2);
        List<User> users = info.getList();
        users.forEach(System.out::println);
    }

    @Test
    public void testLogin() {
        User user = userService.login("道君", "123456");
        System.out.println(user);
    }
}

ssm_mapper

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>
        <groupId>com.asaawan</groupId>
        <artifactId>ssm</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../ssm/pom.xml</relativePath>
    </parent>
    
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ssm_mapper</artifactId>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    
    <dependencies>
        <!--导入 pojo -->
        <dependency>
            <groupId>com.asaawan</groupId>
            <artifactId>ssm_pojo</artifactId>
        </dependency>

        <!-- spring 环境 -->
        <!-- spring 环境 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>

        <!-- mybatis 环境 -->
        <!-- mybatis 环境 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>
        
        <!-- mysql 环境 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        
        <!-- spring 整合 jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        
        <!-- spring 整合 mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </dependency>
        
        <!-- druid 连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        
        <!--分页插件坐标-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
        </dependency>
    </dependencies>
</project>

applicationContext-mapper.xml 配置

<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <!--引入properties配置文件-->
    <context:property-placeholder location="classpath*:*.properties"/>

    <!-- 数据源配置 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!--spring 整合 mybatis-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.asaawan.domain"/>
        <!--分页插件-->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <prop key="helperDialect">mysql</prop>
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

    <!-- 映射扫描 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.asaawan.mapper"/>
    </bean>
</beans>

jdbc.properties 配置

#jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://localhost:3306/ssm_db?useSSL=false&useUnicode=true&characterEncoding=utf8
#jdbc.username=root
#jdbc.password=root
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc.password=root

UserMapper 配置

public interface UserMapper {
    /**
     * 存储数据
     * @param user user
     */
    @Insert("insert into user values(#{uuid},#{userName},#{passWord},#{realName},#{gender},#{birthday})")
    public boolean save(User user);

    /**
     * 更新数据
     * @param user user
     */
    @Update("update user set userName=#{userName},passWord=#{passWord},realName=#{realName},gender=#{gender},birthday=#{birthday} where uuid=#{uuid}")
    public boolean update(User user);

    /**
     * 删除数据
     * @param uuid uuid
     */
    @Delete("delete from user where uuid=#{val}")
    public boolean delete(Integer uuid);

    /**
     * 根据 uuid 获取数据
     * @param uuid uuid
     * @return 用户数据
     */
    @Select("select * from user where uuid=#{val}")
    public User get(Integer uuid);

    /**
     * 获取全部数据
     * @return 用户列表
     */
    @Select("select * from user")
    public List<User> getAll();

    /**
     * 根据用户名和密码获取用户数据
     * @param username 用户名
     * @param password 密码
     * @return 返回符合条件的用户数据
     */
    @Select("select * from user where userName=#{userName} and passWord=#{passWord}")
    public User getByUsernameAndPassword(@Param("userName") String username, @Param("passWord") String password);
}

ssm_jopo

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>
        <groupId>com.asaawan</groupId>
        <artifactId>ssm</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../ssm/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ssm_pojo</artifactId>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>

    <dependencies>
        <!-- json -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
    </dependencies>
</project>

User 配置

public class User {
    private Integer uuid;
    private String userName;
    private String passWord;
    private String realName;
    private Integer gender;
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    private Date birthday;

    public User() {
    }

    public User(Integer uuid, String userName, String passWord, String realName, Integer gender, Date birthday) {
        this.uuid = uuid;
        this.userName = userName;
        this.passWord = passWord;
        this.realName = realName;
        this.gender = gender;
        this.birthday = birthday;
    }

    public Integer getUuid() {
        return uuid;
    }

    public void setUuid(Integer uuid) {
        this.uuid = uuid;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getRealName() {
        return realName;
    }

    public void setRealName(String realName) {
        this.realName = realName;
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "User{" +
                "uuid=" + uuid +
                ", userName='" + userName + '\'' +
                ", passWord='" + passWord + '\'' +
                ", realName='" + realName + '\'' +
                ", gender=" + gender +
                ", birthday=" + birthday +
                '}';
    }
}

sql 语句

# 如果存在 ssm_db 则删除数据库
# DROP DATABASE IF EXISTS ssm_db;

# 不存在则创建数据库 ssm_db
CREATE DATABASE IF NOT EXISTS ssm_db;

# 如果存在 user 表则删除
# DROP TABLE IF EXISTS `user`;

# 创建 user 表
CREATE TABLE IF NOT EXISTS `user` (
  `uuid` INT(30) NOT NULL AUTO_INCREMENT,
  `userName` VARCHAR(255) DEFAULT NULL,
  `passWord` VARCHAR(255) DEFAULT NULL,
  `realName` VARCHAR(255) DEFAULT NULL,
  `gender` INT(1) DEFAULT NULL,
  `birthday` DATE DEFAULT NULL,
  PRIMARY KEY (`uuid`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

-- 插入数据
INSERT INTO `user` VALUES(NULL, '道君', '123456', '张三丰', 1, '1640-12-12'),
(NULL, '道主', '123321', '张道陵', 1, '1640-12-12'),
(NULL, '墨竹', '123456', '罗睺', 1, '1640-12-12'),
(NULL, '昊天', '123456', '张友仁', 1, '1640-12-12'),
(NULL, '阎罗天子', '123456', '燕十三', 1, '1640-12-12'),
(NULL, '王母娘娘', '123456', '西王母', 1, '1640-12-12'),
(NULL, '天蓬元帅', '123456', '猪八戒', 1, '1640-12-12');
posted @ 2021-06-17 20:48  山奈  阅读(73)  评论(0)    收藏  举报