08Mybatis_入门程序——增加用户的操作以及返回自增主键的功能以及返回非自增主键的功能

本文要实现的功能是:给user表增加一个用户。

建表如下:

案例整体结构如下:

第一步:编写po包下面的User.java代码对应上面的数据库

package cn.itcast.mybatis.po;

import java.util.Date;

public class User {
private int id;//主键
private String username;//用户的名称
private Date birthday;//生日
private String sex;//性别
private String address;//地址
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username = username;
}
public Date getBirthday() {
    return birthday;
}
public void setBirthday(Date birthday) {
    this.birthday = birthday;
}
public String getSex() {
    return sex;
}
public void setSex(String sex) {
    this.sex = sex;
}
public String getAddress() {
    return address;
}
public void setAddress(String address) {
    this.address = address;
}

}

第二步:编写mybatis的主要配置文件SqlMapConfig.xml代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
        <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybaits?characterEncoding=utf-8" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>

    <!-- 把映射文件(sqlmap/user.xml)加载进sqlMapConfig.xml-->
        <mappers>
        <mapper resource="sqlmap/user.xml"/>
         </mappers>

</configuration>

第三步:编写上面的sqlmap/user.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">
<!-- nanmespace:命名空间。 作用就是对sql进行分类话管理,理解Sal分离

注意:使用mapper代理方式,namespace有特殊重要的作用
-->

<mapper namespace="test">

<!--
添加用户:
 partmentType:指定输入参数类型是pojo(包括用户的信息)
#{}中指定pojo的属性名,接收到pojo对象的属性值

 -->
    <insert id="insertuser" parameterType="cn.itcast.mybatis.po.User">
     insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})   

    </insert>

</mapper>

第四步:编写测试代码Mybatis_first.java

package cn.itcast.mybatis.first;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import cn.itcast.mybatis.po.User;

public class Mybatis_first {

    //会话工厂
    private SqlSessionFactory sqlSessionFactory;
    //这些事必备的,所以放在Before这里了
    @Before
    public void createsqlSessionFactory() throws IOException
    {
        //配置文件
        String resource="SqlMapConfig.xml";
        InputStream inputStream=Resources.getResourceAsStream(resource);
        //使用SqlSessionFactoryBuilder从配置文件中创建SqlSessionFactory.
        sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
    }
    @Test
    //根据id查询用户的信息
    public void testFindUseById()
    {    //数据库会话实例
        SqlSession sqlSession=null;
        try {
            //创建数据库会话实例sqlSession;
            sqlSession=sqlSessionFactory.openSession();

             User user=new User();
            //这边的id不用给他设置值,因为在数据库中我把id设为自增型了。
            user.setUsername("王晓军");
            user.setBirthday(new Date());
            user.setAddress("浙江");
            user.setSex("1");
            sqlSession.insert("test.insertuser", user);
            //手动提交事务
            sqlSession.commit();
            //关闭会话
            sqlSession.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        finally{
            //如果sqlSession实例是创建的那么把他关闭掉
            if(sqlSession!=null)
            {sqlSession.close();

            }
        }
}

}

运行结构:正确的在数据库中加入了

------------------------------------------------------------------------------------------------------------------------------------------------------------

上面的程序运行ok了但是有一个问题,那就是我把数据库的id设为是自动增长的,那我想获取这个自动增长的id的值怎么办?因为在表关联是这个id要被当做外键的。这个功能叫做主键返回。

mysql自增主键,执行insert提交之前自动生成一个自增主键。

通过mysql函数获取到刚插入记录的自增主键:

LAST_INSERT_ID()

是insert之后调用此函数。

方法如下:

第一步:

修改sqlmap/user.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">
<!-- nanmespace:命名空间。 作用就是对sql进行分类话管理,理解Sal分离

注意:使用mapper代理方式,namespace有特殊重要的作用
-->

<mapper namespace="test">

    <!-- 根据id获取用户信息 -->
    <!-- 在映射文件中配置很多sql语句 -->
    <!--
    id:标识映射文件中的sql;
    将sql语句封装到mappedStatement对象中,所以将id称为statement的id;parmenterType:指定输入的参数的类型,这里指定的int型
    #{}表示一个占位符号;
    #{id}:其中的id表示接收输入的参数,参数名称就是id,如果输入参数就是简单类型,#{}中的参数名可以任意,可以value或其它名称
    resultType:指定的sql输出结果的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象;

     -->
    <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">
        select * from user where id = #{id}
    </select>
    <!-- 自定义条件查询用户列表
    resultType指的是单条记录所映射的java类型,不管查询的是多条还是单条
     -->
    <select id="findUserByUsername" parameterType="java.lang.String"
            resultType="cn.itcast.mybatis.po.User">
       select * from user where username like ‘%${value}%‘
    </select>
<!--
添加用户:
 partmentType:指定输入参数类型是pojo(包括用户的信息)
#{}中指定pojo的属性名,接收到pojo对象的属性值

 -->
    <insert id="insertuser" parameterType="cn.itcast.mybatis.po.User">

        <!--
               将插入的数据主键返回,返回到user对象中去。
         SELECT LAST_INSERT_ID():得到刚insert进去的记录的主键值,
         这个方法只适用于自增长的主键。
         KeyProperty:将查询得到的主键值设置到paramaterType指定的对象的哪个属性。
         order:SELECT LAST_INSERT_ID()执行的顺序。相对于insert语句来说它的执行顺序。
         resultType:指定SELECT LAST_INSERT_ID()的结果类型
        就是说返回的主键值会赋值给cn.itcast.mybatis.po.User中的id属性。

-->
       <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">

           SELECT LAST_INSERT_ID()
       </selectKey>  

       <!-- 以上的代码是为了实现返回主键的功能 -->

       insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
    </insert>

</mapper>

第二步:在测试代码Mybatis_first.java中增加一行代码看看结果:

System.out.println(user.getId());

运行结果是:33.一切正常。

------------------------------------------------------------------------------------------------------------------------------------------------------------

上面讲了一种主键自增长的情况,那么如果不是自增长呢?怎么解决呢?下面讲一下非自增主键的返回(使用uuid)

过程如下:

时间: 2024-10-18 18:36:23

08Mybatis_入门程序——增加用户的操作以及返回自增主键的功能以及返回非自增主键的功能的相关文章

06Mybatis_入门程序——根据用户的名字模糊查询返回List集合

本篇论文讲的是模糊查询然后返回的是一个list集合. 这片文章的案例是基于上一篇文章的,所以主要修改两处地方就可以了. 1.user.xml 2.Mybatis_first.java user.xml代码如下: 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 &

关于黑客,你了解多少?----黑客入门学习(常用术语+DOS操作)

关于黑客,你了解多少?----黑客入门学习(常用术语+DOS操作) ·1.1·前言 黑客一次是由英语"Hacker"英译出来的,是指专门研究.发现计算机和网络漏洞的计算机爱好者,他们伴随着计算机和网络的发展而产生成长.黑客对计算机有着狂热的兴趣和执着的追求,他们不断的研究计算机和网络知识,发现计算机和网络中存在的漏洞,喜欢挑战高难度的网络系统并从中找到漏洞,然后向管理员提出解决和修补漏洞的方法. 黑客的出现推动了计算机和网络的发展与完善.他们所做的不是恶意破坏,他们是一群纵横于网络的大

Android官方入门文档[8]重叠操作栏

Android官方入门文档[8]重叠操作栏 Overlaying the Action Bar重叠操作栏 This lesson teaches you to1.Enable Overlay Mode 1.For Android 3.0 and higher only 2.For Android 2.1 and higher 2.Specify Layout Top-margin You should also read?Styles and Themes 这节课教你1.启用重叠模式 1.对An

【MyBatis框架】MyBatis入门程序第二部分

我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis,接着上一篇继续 我们开始实现需求中的添加和删除用户功能 (1)向数据库中添加用户数据 使用User.xml,加入添加用户的sql语句. [html] view plain copy <!-- 添加用户 parameterType:指定输入参数类型是pojo(包括用户信息) #{}中指定POJO的属性名,接收到POJO对象的属性值,mybatis通过OGNL获取对象的属性 --> <insert id="ins

MyBatis 介绍、简单入门程序

JDBC 编程中的问题 1. 将 SQL 语句硬编码到 Java 代码.不利于系统维护. 设想怎样解决:将SQL单独抽取出来,在配置文件(xml方式.properties文件)进行配置. 2. 数据库连接不能反复利用,对数据库资源是一中浪费. 设想怎样解决:使用数据库连接池管理数据库连接. 3. 向 Statement 设置參数时,对于參数的位置通过硬编码指定,不利于系统维护. 设想怎样解决:是否可以自己主动将 Java 对象的值设置到 Statement. 4. 遍历结果集.resultSet

mybatis入门_mybatis基本原理以及入门程序

一.传统jdbc存在的问题 1.创建数据库的连接存在大量的硬编码, 2.执行statement时存在硬编码. 3.频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 4.存在大量的重复性编码 二.mybatis执行流程 Mybatis基本的执行流程如下图所示: 三.mybatis入门程序 3.1 通过mybatis完成通过主键(id)查询用户(user) 3.1.1.项目环境搭建 建立的是Java项目.采用的mybatis版本为3.2.7. 需要导入mybatis核心jar包

3.MyBatis 入门程序

1     Mybatis入门程序 1.1 需求 具体需求: 1.  根据用户ID来查询用户信息: 2.  根据用户名称来模糊查询用户信息列表: 3.  添加用户: 4.  删除用户: 5.  修改用户. 1.2 下载MyBatis mybaits的代码由github.com管理,地址:https://github.com/mybatis/mybatis-3/releases Lib:mybatis的依赖包 Mybatis-3.2.7.jar:mybatis的核心包 Mybatis-3.2.7.

Ubuntu用户管理操作

Linux是一个用户权限管理得很严格的系统,Ubuntu作为最受欢迎的桌面发行版,提供了简单易用的图形界面工具来管理用户,但是命令行工具往往更强大,用得熟练的话效率会更高.用户管理命令常用的有如下几个: useradd 这个命令用于添加用户,相比图形界面工具,它可以指定用户文件夹,所属群组等.如果执行useradd -D不加任何其它参数,bash将返回当前创建用户的默认选项,如果附加其他参数,那么这个命令就会把新建用户的默认配置更新到当前值.-p选项可以设置 密码,-s选项可以设定shell,-

mybatis入门程序-(二)

1. 添加配置文件 log4j.properties # Global logging configuration #开发环境下日志级别设置成DEBUG,生产环境设置成info或者error log4j.rootLogger=DEBUG, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.Pa