mybatis oracle char 空格_MyBatis系列教程8 : Mybatis3.x与Spring4.x整合

点击上方“Java后端编程”,选择“置顶或者星标”

与你一起成长

一、搭建开发环境

1.1、使用Maven创建Web项目

执行如下命令:

mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4-mybatis3 -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

如下图所示:9d30eb64b3f1e217d08d43ce85502b2c.png

创建好的项目如下:

36f8a42153fd16d654e5fd5c4c04da86.png

编辑pom.xml文件

<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/maven-v4_0_0.xsd">

<modelVersion>4.0.0modelVersion>

<groupId>me.gaclgroupId>

<artifactId>spring4-mybatis3artifactId>

<packaging>warpackaging>

<version>1.0-SNAPSHOTversion>

<name>spring4-mybatis3 Maven Webappname>

<url>http://maven.apache.org

<dependencies>

<dependency>

<groupId>junitgroupId>

<artifactId>junitartifactId>

<version>3.8.1version>

<scope>testscope>

dependency>

dependencies>

<build>

<finalName>spring4-mybatis3finalName>

build>

project>

修改spring4-mybatis3 Maven Webapp部分,把" Maven Webapp"这部分包含空格的内容去掉,否则Maven在编译项目时会因为空格的原因导致一些莫名其妙的错误出现,修改成:spring4-mybatis3。

另外,把以下内容删掉:

<dependency>

<groupId>junitgroupId>

<artifactId>junitartifactId>

<version>3.8.1version>

<scope>testscope>

dependency>

这部分是junit的jar包依赖信息,这个版本太低了,我们不使用这个Junit测试版本,修改过后的pom.xml内容如下:

<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/maven-v4_0_0.xsd">

<modelVersion>4.0.0modelVersion>

<groupId>me.gaclgroupId>

<artifactId>spring4-mybatis3artifactId>

<packaging>warpackaging>

<version>1.0-SNAPSHOTversion>

<name>spring4-mybatis3name>

<url>http://maven.apache.org

<dependencies>

dependencies>

<build>

<finalName>spring4-mybatis3finalName>

build>

project>

1.2、将创建好的项目导入MyEclipse中

具体操作步骤如下图所示:

3b1aa8fd9a424dcc8973ecf0cc1fb956.png

3458218e3df59ceaf822c6541a3bdf7c.png

caa6bb3ef479076a879f769a49372bca.png

2c64aa9af5698e039959176a32b5a4a0.png

7e92214949f90d913a76e3d161d26ea1.png

手动创建【src/main/java】、【src/test/resources】、【src/test/java】这三个source folder,如下图所示:

ecb7077ea5bb4ce273b694db6f9d10aa.png

到此,项目搭建的工作就算是全部完成了。

二、创建数据库和表(针对MySQL)

SQL脚本如下:

Create DATABASE spring4_mybatis3;

USE spring4_mybatis3;

DROP TABLE IF EXISTS t_user;

CREATE TABLE t_user (

user_id char(32) NOT NULL,

user_name varchar(30) DEFAULT NULL,

user_birthday date DEFAULT NULL,

user_salary double DEFAULT NULL,

PRIMARY KEY (user_id)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建好的数据库和表如下:

464276fcc738f50c5c6fc6e950f43101.png

三、使用generator工具生成代码

在网上找到了一个generator工具可以根据创建好的数据库表生成MyBatis的表对应的实体类,SQL映射文件和dao,找到generator工具根目录下的generator.xml文件,这个文件是用来配置代码生成规则的,如下图所示:

34fbe229f7bd37431f6ccb5faec906ab.png

编辑generator.xml文件,内容如下:

xml version="1.0" encoding="UTF-8"?>

DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

<classPathEntry location="E:\repository\mysql\mysql-connector-java\5.1.34\mysql-connector-java-5.1.34.jar" />

<context id="DB2Tables" targetRuntime="MyBatis3">

<commentGenerator>

<property name="suppressAllComments" value="true" />

commentGenerator>

<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/spring4_mybatis3" userId="root" password="XDP">

jdbcConnection>

<javaTypeResolver>

<property name="forceBigDecimals" value="false" />

javaTypeResolver>

<javaModelGenerator targetPackage="me.gacl.domain" targetProject="C:\Users\gacl\spring4-mybatis3\src\main\java">

<property name="enableSubPackages" value="true" />

<property name="trimStrings" value="true" />

javaModelGenerator>

<sqlMapGenerator targetPackage="me.gacl.mapping" targetProject="C:\Users\gacl\spring4-mybatis3\src\main\java">

<property name="enableSubPackages" value="true" />

sqlMapGenerator>

<javaClientGenerator type="XMLMAPPER" targetPackage="me.gacl.dao" targetProject="C:\Users\gacl\spring4-mybatis3\src\main\java">

<property name="enableSubPackages" value="true" />

javaClientGenerator>

<table tableName="t_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />

context>

generatorConfiguration>

打开命令行窗口,切换到生成工具的根目录下,执行如下命令:

java -jar mybatis-generator-core-1.3.2.jar -configfile generator.xml -overwrite

如下图所示:004828d54cd10abe458e6a6e538c63f1.png

刚才我们在generator.xml文件中配置将生成的代码和SQL映射文件放到"C:\Users\gacl\spring4-mybatis3\src\main\java"这个目录下,这个目录就是我们的spring4-mybatis3项目所在目录,我们刷新一下src/main/java目录,就可以看到生成的代码和映射文件了,如下图所示:

bd4d89eefa7a98777ba8e944689155a9.png

生成的代码和映射文件一行都不用改,可以直接应用到项目当中。下面我们看一眼由generator工具生成的代码和映射文件:

1、生成的dao类

package me.gacl.dao;

import me.gacl.domain.User;

public interface UserMapper {

int deleteByPrimaryKey(String userId);

int insert(User record);

int insertSelective(User record);

User selectByPrimaryKey(String userId);

int updateByPrimaryKeySelective(User record);

int updateByPrimaryKey(User record);

}

生成的UserMapper是一个接口,里面定义了一些操作t_user表的增删改查方法。

2、生成的实体类

package me.gacl.domain;

import java.util.Date;

public class User {

private String userId;

private String userName;

private Date userBirthday;

private Double userSalary;

public String getUserId() {

return userId;

}

public void setUserId(String userId) {

this.userId = userId == null ? null : userId.trim();

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName == null ? null : userName.trim();

}

public Date getUserBirthday() {

return userBirthday;

}

public void setUserBirthday(Date userBirthday) {

this.userBirthday = userBirthday;

}

public Double getUserSalary() {

return userSalary;

}

public void setUserSalary(Double userSalary) {

this.userSalary = userSalary;

}

}

User类是t_user表的对应的实体类,User类中定义的属性和t_user表中的字段一一对应。

3、生成的SQL映射文件

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="me.gacl.dao.UserMapper" >

<resultMap id="BaseResultMap" type="me.gacl.domain.User" >

<id column="user_id" property="userId" jdbcType="CHAR" />

<result column="user_name" property="userName" jdbcType="VARCHAR" />

<result column="user_birthday" property="userBirthday" jdbcType="DATE" />

<result column="user_salary" property="userSalary" jdbcType="DOUBLE" />

resultMap>

<sql id="Base_Column_List" >

user_id, user_name, user_birthday, user_salary

sql>

<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >

select

<include refid="Base_Column_List" />

from t_user

where user_id = #{userId,jdbcType=CHAR}

select>

<delete id="deleteByPrimaryKey" parameterType="java.lang.String" >

delete from t_user

where user_id = #{userId,jdbcType=CHAR}

delete>

<insert id="insert" parameterType="me.gacl.domain.User" >

insert into t_user (user_id, user_name, user_birthday,

user_salary)

values (#{userId,jdbcType=CHAR}, #{userName,jdbcType=VARCHAR}, #{userBirthday,jdbcType=DATE},

#{userSalary,jdbcType=DOUBLE})

insert>

<insert id="insertSelective" parameterType="me.gacl.domain.User" >

insert into t_user

<trim prefix="(" suffix=")" suffixOverrides="," >

<if test="userId != null" >

user_id,

if>

<if test="userName != null" >

user_name,

if>

<if test="userBirthday != null" >

user_birthday,

if>

<if test="userSalary != null" >

user_salary,

if>

trim>

<trim prefix="values (" suffix=")" suffixOverrides="," >

<if test="userId != null" >

#{userId,jdbcType=CHAR},

if>

<if test="userName != null" >

#{userName,jdbcType=VARCHAR},

if>

<if test="userBirthday != null" >

#{userBirthday,jdbcType=DATE},

if>

<if test="userSalary != null" >

#{userSalary,jdbcType=DOUBLE},

if>

trim>

insert>

<update id="updateByPrimaryKeySelective" parameterType="me.gacl.domain.User" >

update t_user

<set >

<if test="userName != null" >

user_name = #{userName,jdbcType=VARCHAR},

if>

<if test="userBirthday != null" >

user_birthday = #{userBirthday,jdbcType=DATE},

if>

<if test="userSalary != null" >

user_salary = #{userSalary,jdbcType=DOUBLE},

if>

set>

where user_id = #{userId,jdbcType=CHAR}

update>

<update id="updateByPrimaryKey" parameterType="me.gacl.domain.User" >

update t_user

set user_name = #{userName,jdbcType=VARCHAR},

user_birthday = #{userBirthday,jdbcType=DATE},

user_salary = #{userSalary,jdbcType=DOUBLE}

where user_id = #{userId,jdbcType=CHAR}

update>

mapper>

UserMapper.xml这个文件的内容是编写操作t_user表的SQL语句,重点说一下UserMapper.xml配置中需要注意的几个小细节问题:

1、UserMapper.xml的标签的namespace必须是UserMapper接口的全类名,既

2、UserMapper.xml的定义操作数据库的 。

关注微信公众号,在后台回复关键字:Java,可以获取一份整理的 Java 最新技术干货。

MyBatis分享

MyBatis系列教程1 : MyBatis快速入门

MyBatis系列教程2 : 对表执行CRUD操作

MyBatis系列教程3:优化MyBatis配置文件

MyBatis系列教程4 : 解决字段名与实体类属性名不相同的冲突

MyBatis系列教程5 : 实现关联表查询

MyBatis系列教程6 : 调用存储过程

MyBatis系列教程7 : Mybatis缓存

看完本文有收获?请转发分享给更多人

27843f02f78f595073ae50d6b6707754.gif

在看  840d2c93e0662acc0fa4abffc85b995e.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值