【狂人小白】MyBatis.004 第一个插入!

简介:

参考:

  1. 源代码下载http://down.51cto.com/data/1875839

在哪里配置插入数据?

  1. 在POJO对象对应的Mapper配置文件中进行配置

  2. 使用<insert />标签名进行构造

  3. 举个例子,如下代码

位置:cc/fozone/demo/mybatis/config/mapper/User.mapper.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<? 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 = "cc.fozone.demo.mybatis.controller.IUserController"
 
...
 
< insert 
     id = "insertUser" 
     parameterType = "cc.fozone.demo.mybatis.pojo.User"  
     statementType = "PREPARED" 
     flushCache = "true" 
     keyProperty = "id" >
     
     <![CDATA[
        insert into users (name,age,phone) values (#{name},#{age},#{phone}) 
     ]]>
     
</ insert >
 
...
 
</ mapper >

这些参数是什么含义?

属性 必选 含义
id 全局唯一标示符,代表该操作
parameterType
参数类型,可以是基本数据类,例如int、string等,也可以是某个类
statementType

STATEMENT,PREPARED(默认) 或 CALLABLE

MyBatis选择使用Statement,PreparedStatement 或 CallableStatement。

flushCache 默认:false,执行时是否清空缓存
keyProperty

主要用作自动生成自增主键的字段设置,对于不支持自增的数据库,有特别用处

默认:空

注:仅对insert和update有用

keyColumn 与上述相同,但主要设置keyProperty
useGeneratedKeys

通过JDBC驱动的getGeneratedKeys方法返回数据库自己生成的主键

默认:false

注:仅对insert和update有用


parameterType如何解析执行?

1
2
3
4
5
6
7
8
9
10
11
< insert 
     id = "insertUser" 
     parameterType = "cc.fozone.demo.mybatis.pojo.User"  
     ...
     >
     
     <![CDATA[
        insert into users (name,age,phone) values (#{name},#{age},#{phone}) 
     ]]>
     
</ insert >
  1. 执行插入语句时,需要传入类cc.fozone.demo.mybatis.pojo.User的对象;

  2. 解析时,将会根据#{string}的字段,通过传递的对象,调用对应的getter方法取值替换,
    例如:#{name}将会User.getName()值替换,#{age}将会被User.getAge()值替换;


为IUserController接口添加插入用户的方法

位置:cc/fozone/demo/mybatis/controller/IUserController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package  cc.fozone.demo.mybatis.controller;
 
import  java.util.List;
 
import  cc.fozone.demo.mybatis.pojo.User;
 
public  interface  IUserController {
     
     ...
     
     // 添加用户信息
     public  void  insertUser(User user);
     
}

如何执行插入User?

位置:cc/fozone/demo/mybatis/App.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package  cc.fozone.demo.mybatis;
 
...
 
public  class  App {
     ...
     // SQL会话工厂
     private  SqlSessionFactory factory;
         ...
         
         public  void  insertUser() {
             ...
         }
}

1. 采用接口方式执行(推荐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public  void  insertUser() {
     User user =  new  User();
     user.setName( "user" );
     user.setAge( 100 );
     user.setPhone( "13812341234" );
     
     // 打开会话
     SqlSession session = factory.openSession();
 
     // 通过getMapper获得实例化接口
     // 这里为什么可以实例化,重点在于mapper配置的namespace的配置
     IUserController controller = session.getMapper(IUserController. class );
     
     // 插入数据
     controller.insertUser(user);
     
     // 提交执行SQL
     session.commit();
     
     // 关闭会话
     session.close();
}

2. 采用session方式执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public  void  insertUser() {
     User user =  new  User();
     user.setName( "user" );
     user.setAge( 100 );
     user.setPhone( "13812341234" );
     
     // 打开会话
     SqlSession session = factory.openSession();
 
     // 通过session方式插入数据
     session.insert( "insertUser" ,user);
     
     // 提交执行SQL
     session.commit();
     
     // 关闭会话
     session.close();

测试结果

1. 编写执行函数

1
2
3
4
5
6
7
8
public  class  App {
     ...
     public  static  void  main(String[] args) {
         App app =  new  App();
         app.insertUser();
     }
     ...
}

2. 执行后,查询数据库users表数据是否插入,存在即成功。

wKiom1QgPJayzcNdAABU43N3rjo116.jpg










本文转自 sundunjam 51CTO博客,原文链接:http://blog.51cto.com/sunspot/1557107,如需转载请自行联系原作者
目录
相关文章
|
关系型数据库 Java 数据库连接
|
8月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1403 1
Spring boot 使用mybatis generator 自动生成代码插件
|
11月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
870 0
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
642 2
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
702 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
710 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
3362 2
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
1110 1
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码