1.自动生成
插件名:MybatisCodeHelperNew-2.7.8-191-193
①这次我们先在数据库中新建一张表
CREATE TABLE `sys_users` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',
`login_name` varchar(30) DEFAULT NULL COMMENT '登录名',
`password` varchar(32) DEFAULT NULL COMMENT '登录密码',
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号码',
`real_name` varchar(20) DEFAULT NULL COMMENT '真实名称',
`sex` int(1) DEFAULT NULL COMMENT '性别 1男 2女',
`address` varchar(100) DEFAULT NULL COMMENT '地址',
`phone` varchar(255) DEFAULT NULL COMMENT '电话',
`img` varchar(255) DEFAULT NULL COMMENT '用户头像',
PRIMARY KEY (`id`),
UNIQUE KEY `login_name` (`login_name`) COMMENT '登录名不能重复',
UNIQUE KEY `id_card` (`id_card`) COMMENT '身份证号唯一'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
②选择自动生成
SysUsers实体类
public class SysUsers {
/**
* 用户编号
*/
private Integer id;
/**
* 登录名
*/
private String loginName;
/**
* 登录密码
*/
private String password;
/**
* 身份证号码
*/
private String idCard;
/**
* 真实名称
*/
private String realName;
/**
* 性别 1男 2女
*/
private Integer sex;
/**
* 地址
*/
private String address;
/**
* 电话
*/
private String phone;
/**
* 用户头像
*/
private String img;
}
SysUsersMapper接口
因为在这里我们不需要自动生成的,所以我们删除后,将这个接口继承BaseMapper接口,而BaseMapper接口需要指定泛型,这里需要加入vo和form包,也就是说要分别定义两个类了,比如insert操作,以前的数据都是将前端传来的数据封装成user(pojo)对象,现在用form包下的对象去接收,于是我们的SysUsersForm去继承SysUsers,用于接收更新user表的数据的类.一样的,我们将查询的结果放到SysUsersVO中,用于接收查询的数据,我们的SysUsersVO去继承SysUsers.
Form 和 VO 是不同层的数据传输对象作用域应该只在所属规定范围内使用
package com.zw.sys.mapper;
import com.zw.common.base.mapper.BaseMapper;
import com.zw.sys.vo.SysUsersVO;
import com.zw.sys.form.SysUsersForm;
/**
* 用户表操作捷库
*/
public interface SysUsersMapper extends BaseMapper<SysUsersForm, SysUsersVO> {
}
SysUsersForm类
package com.zw.sys.form;
/**
* 比如insert操作,以前的数据都是将前端传来的数据封装成user对象,现在用form包下的对象去接收,
* 于是我们的SysUsersForm去继承SysUsers,
*
*/
import com.zw.sys.pojo.SysUsers;
/**
* @ClassName:SysUsersForm
* @Description: 用于接收更新user表的数据的类
* @Author: KevinZeng
* @Date 2020/1/8 下午 11:01
*/
public class SysUsersForm extends SysUsers {
}
SysUsersVO类
package com.zw.sys.vo;
/**
* 一样的,我们将查询的结果放到SysUsersVO中
*/
import com.zw.sys.pojo.SysUsers;
/**
* @ClassName:SysUsersVO
* @Description: 用于接收查询的数据
* @Author: KevinZeng
* @Date 2020/1/8 下午 11:06
*/
public class SysUsersVO extends SysUsers {
}
SysUsersMapper.xml映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zw.sys.mapper.SysUsersMapper">
<resultMap id="BaseResultMap" type="com.zw.sys.vo.SysUsersVO">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="login_name" jdbcType="VARCHAR" property="loginName" />
<result column="password" jdbcType="VARCHAR" property="password" />
<result column="id_card" jdbcType="VARCHAR" property="idCard" />
<result column="real_name" jdbcType="VARCHAR" property="realName" />
<result column="sex" jdbcType="INTEGER" property="sex" />
<result column="address" jdbcType="VARCHAR" property="address" />
<result column="phone" jdbcType="VARCHAR" property="phone" />
<result column="img" jdbcType="VARCHAR" property="img" />
</resultMap>
<sql id="Base_Column_List">
id, login_name, `password`, id_card, real_name, sex, address, phone, img
</sql>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.zw.sys.pojo.SysUsers" useGeneratedKeys="true">
insert into sys_users (login_name, `password`, id_card,
real_name, sex, address,
phone, img)
values (#{loginName}, #{password}, #{idCard},
#{realName}, #{sex}, #{address},
#{phone}, #{img})
</insert>
<delete id="delete" parameterType="java.lang.Integer">
delete from sys_users
where id = #{id}
</delete>
<update id="update" parameterType="com.zw.sys.form.SysUsersForm">
update sys_users
set login_name = #{loginName},
`password` = #{password},
id_card = #{idCard},
real_name = #{realName},
sex = #{sex},
address = #{address},
phone = #{phone},
img = #{img}
where id = #{id}
</update>
<select id="selectOne" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from sys_users
where id = #{id}
</select>
<select id="selectList" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from sys_users
</select>
</mapper>
2.编写service
package com.zw.sys.service;
import com.zw.common.base.service.IBaseService;
import com.zw.sys.form.SysUsersForm;
public interface ISysUsersService extends IBaseService<SysUsersForm>{
}
package com.zw.sys.service.impl;
import com.zw.common.base.mapper.BaseMapper;
import com.zw.common.base.service.impl.BaseServiceImpl;
import com.zw.sys.form.SysUsersForm;
import com.zw.sys.mapper.SysUsersMapper;
import com.zw.sys.service.ISysUsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @ClassName:SysUsersServiceImpl
* @Description: TODO
* @Author: KevinZeng
* @Date 2020/1/8 下午 11:27
*/
@Service
public class SysUsersServiceImpl extends BaseServiceImpl<SysUsersForm> implements ISysUsersService {
@Autowired
private SysUsersMapper sysUsersMapper;
/**
* sysUsersMapper--->baseMapper
* BaseServiceImpl<SysUsersForm>-->
* public BaseServiceImpl(BaseMapper baseMapper) {
* this.baseMapper = baseMapper;
* }
* 1.将sysUsersMapper传到了service
*/
/**
* 通过构造方法传一个baseMapper进来
* 即子类注入一个BaseMapper
*
* @param baseMapper 传入的baseMapper
*/
public SysUsersServiceImpl(BaseMapper baseMapper) {
super(baseMapper);
}
}
3.编写controller
package com.zw.sys.controller;
import com.zw.common.Result;
import com.zw.sys.query.SysUsersQuery;
import com.zw.sys.service.ISysUsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @ClassName:SysUsersController
* @Description: TODO
* @Author: KevinZeng
* @Date 2020/1/8 下午 11:40
*/
@Controller
@RequestMapping("sys/user")
public class SysUsersController {
@Autowired
private ISysUsersService sysUsersService;
/**
* 分页获取用户信息列表
* @param query
* @return
*/
@RequestMapping(value = "list.do")
@ResponseBody
public Result queryPage(SysUsersQuery query){
return sysUsersService.queryPage(query);
}
}
这里我们查询参数并没有直接使用Query query,选择SysUsersQuery,因为不同的用户查询权限及参数不一样.我们将共同的参数封装到Query中,具体的子类可以进行扩展.
package com.zw.sys.query;
import com.zw.common.base.Query;
/**
* @ClassName:SysUsersQuery
* @Description: sys接收查询参数的类
* @Author: KevinZeng
* @Date 2020/1/8 下午 11:08
*/
public class SysUsersQuery extends Query {
}
4.编写后端配置文件
4.1数据库配置文件
#
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/car?useUnicode=true&characterEncoding=utf8&useSSL=true
jdbc.username=root
jdbc.password=root
#druid 内置监视器
jdbc.filters=stat,log4j,wall
# 最大连接数
jdbc.maxActive=20
# 最小连接数
jdbc.minIdle=1
4.2日志配置文件
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
4.3spring事务配置文件
<?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 http://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 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--引入数据库配置文件-->
<context:property-placeholder location="classpath:jdbc.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>
<!--配置sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--配置mapper映射文件-->
<property name="mapperLocations">
<array>
<value>classpath*:mapper/sys/*.xml</value>
</array>
</property>
<!--配置插件-->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor"/>
</array>
</property>
<!--配置别名-->
<property name="typeAliasesPackage" value="com.zw.sys.vo"/>
</bean>
<!--配置mapper接口代理对象的生成-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--需要扫描的mapper接口的包-->
<property name="basePackage" value="com.zw.sys.mapper,com.zw.bussi.mapper"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--配置声明式事务-->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
4.4springmvc配置文件
<?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/mvc"
xmlns:conetxt="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!--导入配置文件-->
<import resource="spring-tx.xml"/>
<!--配置包扫描-->
<conetxt:component-scan base-package="com.zw"/>
<!--配置springmvc映射器和适配器-->
<context:annotation-driven/>
</beans>
5.项目配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--配置springmvc-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!--配置编码过滤器-->
<filter>
<filter-name>charsetFilter</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>charsetFilter</filter-name>
<servlet-name>springmvc</servlet-name>
</filter-mapping>
</web-app>