博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
maven构建项目,整合ssm(2 整合mybatis)
阅读量:6240 次
发布时间:2019-06-22

本文共 13172 字,大约阅读时间需要 43 分钟。

hot3.png

完整的代码请见码云  https://gitee.com/liuhuxiang/simplemavendemo

1 下载mysql 

这一步就不详述了,网上的教程有很多,小伙伴自行参考,有个点要注意下,高版本的mysql下载完成后,用navicat等客户端连接会有错误,建议下载4.1.17以下的版本

具体参考: https://blog.csdn.net/sun19910114/article/details/39118045

创建数据库

CREATE DATABASE liuhuxiang;

查询数据库

show databases;

进入数据库

use liuhuxiang;

创建测试表

DROP TABLE IF EXISTS `user_t`;CREATE TABLE `user_t` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `user_name` varchar(40) NOT NULL,  `password` varchar(255) NOT NULL,  `age` int(4) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;insert  into `user_t`(`id`,`user_name`,`password`,`age`) values (1,'测试','sfasgfaf',24);

2 pom文件配置

通过maven去下载pom文件中指定的jar,主要包括一些spring的核心包,mybatis,dbcp,以及log4j的包,一次性提供给大家,通过命令 mvn clean install:install下载包,如果发现下载速度太慢的话,就去用阿里云镜像,享受飞速下载。。。

4.0.0
cn.liuhuxiang
simplemavendemo
1.0-SNAPSHOT
war
simplemavendemo Maven Webapp
http://www.example.com
UTF-8
1.7
1.7
4.0.2.RELEASE
3.2.6
1.7.7
1.2.17
junit
junit
4.11
test
org.springframework
spring-core
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-oxm
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-test
${spring.version}
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.2.2
javax
javaee-api
7.0
mysql
mysql-connector-java
5.1.30
commons-dbcp
commons-dbcp
1.2.2
jstl
jstl
1.2
log4j
log4j
${log4j.version}
com.alibaba
fastjson
1.1.41
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
org.codehaus.jackson
jackson-mapper-asl
1.9.13
commons-fileupload
commons-fileupload
1.3.1
commons-io
commons-io
2.4
commons-codec
commons-codec
1.9
src/main/java
**/*.xml
src/main/resources

3 构建包结构

144515_3SDG_3523594.png

我这里把我的包结构都提供出来了,大家可以参考建一下

这里可能会出现的问题,就是右键,new 的时候,没有java class这个选项?

这是因为构建完maven项目的时候,没有把src下的目录标注成可编译的目录,网上找了篇博客,大家参考下,配置一下就可以了 

https://blog.csdn.net/qq_27093465/article/details/52912444

4 使用MyBatis Generator构建代码

推荐的神器,构建代码十分方便,按照下面的地址操作即可,把构建好的代码粘贴过来

https://blog.csdn.net/zhshulin/article/details/23912615

但是这里有个点要注意,就是构建出来的代码,是按照代码生成器的目录层级存放的,我们生成代码之后,要按照自己的目录层级存放,并且把Mapper.xml 里面对应的东西改掉,否则在测试mybatis的时候,会报各种奇葩的错误

151443_PCAI_3523594.png

这三份文件 UserMaper  User  UserMapper.xml 就是代码生成器生成的,重点要注意的是UserMapper.xml,这里很容易出错,下面用红线标出来的,要特别注意,改成自己对应的路径名称

UserMaper

package com.liuhuxiang.dao;import com.liuhuxiang.entity.User;import org.springframework.stereotype.Component;/** * @author liuhuxiang * @version $Id: UserMapper.java, v 0.1 2018年04月19日 15:46 liuhuxiang Exp $ */@Component//把UserMapper注册成beanpublic interface UserMapper {    int deleteByPrimaryKey(Integer id);    int insert(User record);    int insertSelective(User record);    User selectByPrimaryKey(Integer id);    int updateByPrimaryKeySelective(User record);    int updateByPrimaryKey(User record);}

User

package com.liuhuxiang.entity;/** * @author liuhuxiang * @version $Id: User.java, v 0.1 2018年04月19日 15:44 liuhuxiang Exp $ */public class User {    private Integer id;    private String userName;    private String password;    private Integer age;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName == null ? null : userName.trim();    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password == null ? null : password.trim();    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }}

UserMapper.xml

id, user_name, password, age
delete from user_t where id = #{id,jdbcType=INTEGER}
insert into user_t (id, user_name, password, age) values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER})
insert into user_t
id,
user_name,
password,
age,
#{id,jdbcType=INTEGER},
#{userName,jdbcType=VARCHAR},
#{password,jdbcType=VARCHAR},
#{age,jdbcType=INTEGER},
update user_t
user_name = #{userName,jdbcType=VARCHAR},
password = #{password,jdbcType=VARCHAR},
age = #{age,jdbcType=INTEGER},
where id = #{id,jdbcType=INTEGER}
update user_t set user_name = #{userName,jdbcType=VARCHAR}, password = #{password,jdbcType=VARCHAR}, age = #{age,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}

5 整合mybats,配置文件

150023_vbwe_3523594.png

这步主要是配置jdbc.properties   log4j.properties   spring-mybatis.xml三个文件

jdbc.properties

主要是数据库连接的常量设置

# 1 这里一定要注意,看看后面是否有空格,要统一去掉,否则调试会报错# 2 localhost如果不行的话,可以换成127.0.0.1 试试看,liuhuxiang为数据库名,之前傻乎乎的以为是表名=-=driver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/liuhuxiangusername=rootpassword=admin#定义初始连接数initialSize=0#定义最大连接数maxActive=20#定义最大空闲maxIdle=20#定义最小空闲minIdle=1#定义最长等待时间maxWait=60000

log4j.properties

主要是日志的配置项,通过apache的开源项目Log4j,可以查看调试过程中的日志,非常好用

#这里大家直接copy就可以了,没有什么要改动的#定义LOG输出级别log4j.rootLogger=INFO,Console,File  #定义日志输出目的地为控制台log4j.appender.Console=org.apache.log4j.ConsoleAppender  log4j.appender.Console.Target=System.out  #可以灵活地指定日志输出格式,下面一行是指定具体的格式log4j.appender.Console.layout = org.apache.log4j.PatternLayout  log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n  #文件大小到达指定尺寸的时候产生一个新的文件log4j.appender.File = org.apache.log4j.RollingFileAppender  #指定输出目录log4j.appender.File.File = logs/ssm.log  #定义文件最大大小log4j.appender.File.MaxFileSize = 10MB  # 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志log4j.appender.File.Threshold = ALL  log4j.appender.File.layout = org.apache.log4j.PatternLayout  log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

spring-mybatis.xml

这也是整合mybatis的关键文件

 
 
 
 

6 补全service

151933_EEQg_3523594.png

UserService

package com.liuhuxiang.service;import com.liuhuxiang.entity.User;/** * @author liuhuxiang * @version $Id: UserService.java, v 0.1 2018年04月19日 15:28 liuhuxiang. */public interface UserService {    public User getUserById(int userId);}

UserServiceImpl

package com.liuhuxiang.service;import com.liuhuxiang.dao.UserMapper;import com.liuhuxiang.entity.User;import org.springframework.stereotype.Service;import javax.annotation.Resource;/** * @author liuhuxiang * @version $Id: UserServiceImpl.java, v 0.1 2018年04月19日 15:29 liuhuxiang */@Service("userService")public class UserServiceImpl implements UserService {    @Resource    private UserMapper userMapper;    @Override    public User getUserById(int userId) {        System.out.println("************************userId=" + userId);        return this.userMapper.selectByPrimaryKey(userId);    }}

7 测试

152230_6Uwf_3523594.png

applicationContext.xml

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration

这两个标签不明白的,大家参考下面博客

https://blog.csdn.net/u013803262/article/details/52253825

TestMybatis

package src.test.java.testmybatis;import com.alibaba.fastjson.JSON;import com.liuhuxiang.entity.User;import com.liuhuxiang.service.UserService;import org.apache.log4j.Logger;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import javax.annotation.Resource;/** * @author liuhuxiang * @version $Id: TestMybatis.java, v 0.1 2018年04月25日 21:55 liuhuxiang Exp $ */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath*:applicationContext.xml", "classpath*:spring-mybatis.xml"})public class TestMybatis {        private static Logger      logger = Logger.getLogger(TestMybatis.class);    @Resource    private        UserService userService;    @Test    public void testMyBatis() {        User user = userService.getUserById(1);        logger.info(JSON.toJSONString(user));    }}

测试结果

152453_myMC_3523594.png

表明与mybatis整合成功

8 遇到的问题

mybatis绑定错误  

220829_A4fy_3523594.png

整合mybatis的过程,遇到的最大的问题,大概就是这个令人头疼的错误吧

大家参考一下这篇博客

https://blog.csdn.net/gwd1154978352/article/details/68954224

小编参照博客修改了很多次,还是报错,我的Mapper.xml文件已经确定没有错误了,查了下,原来是maven打包的问题

maven会把resources下的xml打包成class文件,但是上面的UserMapper.xml并没有放在resources下,而是单独的建了一个包,用来存放这个xml

200616_vu5A_3523594.png

也就是说,自动打包的时候,不会把这份UserMapper.xml打包到class文件里面,所以解决方法在pom文件中,强制的把xml文件打到class文件中

src/main/java
**/*.xml
src/main/resources

问题解决

 

找不到JDBC连接

220624_RXp1_3523594.png

我遇到这个问题,是因为下载了最新版本的mysql,去官网找了低版本的mysql,测试成功

 

参考:https://blog.csdn.net/zhshulin/article/details/37956105

 

转载于:https://my.oschina.net/u/3523594/blog/1798499

你可能感兴趣的文章
LabVIEW串口通信
查看>>
2017UGUI之slider
查看>>
python下载酷狗音乐源码
查看>>
MySQL学习----explain查看一条sql 的性能
查看>>
第零次作业
查看>>
Android + eclipse +ADT安装完全教程
查看>>
【批处理学习笔记】第七课:简单的批处理命令(6)
查看>>
leetcode 【 Subsets 】python 实现
查看>>
leetcode 【 Intersection of Two Linked Lists 】python 实现
查看>>
codeforces 767A Snacktower(模拟)
查看>>
用 Quartz 画聊天对话框背景实例
查看>>
Quartz2D简单绘制之饼状图
查看>>
你优化系统的目标是什么?
查看>>
SVN(64位)报 Failed to load JavaHL Library. 的解决方法
查看>>
基本运算符
查看>>
黄聪:WordPress 多站点建站教程(三):主站如何调用子站的文章内容、SQL语句如何写?...
查看>>
Activity的启动模式 4种launchMode Intent.FLAG_NEW_TASK 详解
查看>>
hdu 2254 奥运 **
查看>>
数据结构基础
查看>>
UltraISO制作ISO镜像文件
查看>>