在POJO对象对应的Mapper配置文件中进行配置
使用<insert />标签名进行构造
举个例子,如下代码
位置: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
<code><?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"UTF-8"</code> <code>?></code>
<code><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"</code>
<code>"http://mybatis.org/dtd/mybatis-3-mapper.dtd"></code>
<code><</code><code>mapper</code> <code>namespace</code><code>=</code><code>"cc.fozone.demo.mybatis.controller.IUserController"</code><code>> </code>
<code>...</code>
<code><</code><code>insert</code>
<code> </code><code>id</code><code>=</code><code>"insertUser"</code>
<code> </code><code>parameterType</code><code>=</code><code>"cc.fozone.demo.mybatis.pojo.User"</code>
<code> </code><code>statementType</code><code>=</code><code>"PREPARED"</code>
<code> </code><code>flushCache</code><code>=</code><code>"true"</code>
<code> </code><code>keyProperty</code><code>=</code><code>"id"</code><code>></code>
<code> </code>
<code> </code><code><![CDATA[</code>
<code> </code><code>insert into users (name,age,phone) values (#{name},#{age},#{phone}) </code>
<code> </code><code>]]></code>
<code></</code><code>insert</code><code>></code>
<code></</code><code>mapper</code><code>></code>
属性
必选
含义
id
是
全局唯一标示符,代表该操作
parameterType
否
参数类型,可以是基本数据类,例如int、string等,也可以是某个类
statementType
STATEMENT,PREPARED(默认) 或 CALLABLE
MyBatis选择使用Statement,PreparedStatement 或 CallableStatement。
flushCache
默认:false,执行时是否清空缓存
keyProperty
主要用作自动生成自增主键的字段设置,对于不支持自增的数据库,有特别用处
默认:空
注:仅对insert和update有用
keyColumn
与上述相同,但主要设置keyProperty
useGeneratedKeys
通过JDBC驱动的getGeneratedKeys方法返回数据库自己生成的主键
默认:false
<code> </code><code>...</code>
<code> </code><code>></code>
执行插入语句时,需要传入类cc.fozone.demo.mybatis.pojo.User的对象;
解析时,将会根据#{string}的字段,通过传递的对象,调用对应的getter方法取值替换,
例如:#{name}将会User.getName()值替换,#{age}将会被User.getAge()值替换;
位置:cc/fozone/demo/mybatis/controller/IUserController.java
<code>package</code> <code>cc.fozone.demo.mybatis.controller;</code>
<code>import</code> <code>java.util.List;</code>
<code>import</code> <code>cc.fozone.demo.mybatis.pojo.User;</code>
<code>public</code> <code>interface</code> <code>IUserController {</code>
<code> </code><code>// 添加用户信息</code>
<code> </code><code>public</code> <code>void</code> <code>insertUser(User user);</code>
<code>}</code>
位置:cc/fozone/demo/mybatis/App.java
<code>package</code> <code>cc.fozone.demo.mybatis;</code>
<code>public</code> <code>class</code> <code>App {</code>
<code> </code><code>// SQL会话工厂</code>
<code> </code><code>private</code> <code>SqlSessionFactory factory;</code>
<code> </code><code>...</code>
<code> </code>
<code> </code><code>public</code> <code>void</code> <code>insertUser() {</code>
<code> </code><code>...</code>
<code> </code><code>}</code>
1. 采用接口方式执行(推荐)
<code>public</code> <code>void</code> <code>insertUser() {</code>
<code> </code><code>User user = </code><code>new</code> <code>User();</code>
<code> </code><code>user.setName(</code><code>"user"</code><code>);</code>
<code> </code><code>user.setAge(</code><code>100</code><code>);</code>
<code> </code><code>user.setPhone(</code><code>"13812341234"</code><code>);</code>
<code> </code><code>// 打开会话</code>
<code> </code><code>SqlSession session = factory.openSession();</code>
<code> </code><code>// 通过getMapper获得实例化接口</code>
<code> </code><code>// 这里为什么可以实例化,重点在于mapper配置的namespace的配置</code>
<code> </code><code>IUserController controller = session.getMapper(IUserController.</code><code>class</code><code>);</code>
<code> </code><code>// 插入数据</code>
<code> </code><code>controller.insertUser(user);</code>
<code> </code><code>// 提交执行SQL</code>
<code> </code><code>session.commit();</code>
<code> </code><code>// 关闭会话</code>
<code> </code><code>session.close();</code>
2. 采用session方式执行
<code> </code><code>// 通过session方式插入数据</code>
<code> </code><code>session.insert(</code><code>"insertUser"</code><code>,user);</code>
1. 编写执行函数
<code> </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>
<code> </code><code>App app = </code><code>new</code> <code>App();</code>
<code> </code><code>app.insertUser();</code>
<code> </code><code>}</code>
2. 执行后,查询数据库users表数据是否插入,存在即成功。
<a href="http://s3.51cto.com/wyfs02/M00/49/F7/wKiom1QgPJayzcNdAABU43N3rjo116.jpg" target="_blank"></a>
本文转自 sundunjam 51CTO博客,原文链接:http://blog.51cto.com/sunspot/1557107,如需转载请自行联系原作者