SSM系列——Mybatis增删改查,配置详解day5-2

181 篇文章 3 订阅
24 篇文章 2 订阅

Mybatis增删改查

配置

<mapper namespace="userMapper">
    <insert id="insertOne" parameterType="com.example.mybatis.entity.User">
        insert into user value (#{id},#{username},#{password})
    </insert>
</mapper>

方法

核心
//新增
        sqlSession.insert("userMapper.insertOne", user);
        //提交事务
        sqlSession.commit();
//增
    @Test
    public void test4() throws IOException {
        User user = new User();
        user.setUsername("wangwu");
        user.setPassword("lkjjgsa");
        //加载核心配置文件
        InputStream resource = Resources.getResourceAsStream("config/sqlMapperConfi.xml");
        //获得sqlSession工厂对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resource);
        //获取sqlSession回话对象
        SqlSession sqlSession = factory.openSession();
        //新增
        sqlSession.insert("userMapper.insertOne", user);
        //提交事务
        sqlSession.commit();
        //执行操作
        List<User> list = sqlSession.selectList("userMapper.findAll");
        list.forEach(System.out::println);
        //释放sqlSession
        sqlSession.close();
    }

配置

<mapper namespace="userMapper">
    <delete id="deleteOne" parameterType="com.example.mybatis.entity.User">
        delete
        from user
        where id = #{id};
    </delete>
</mapper>

方法

核心
        //删除
        sqlSession.delete("userMapper.deleteOne", 1L);
        //提交事务
        sqlSession.commit();
    //删
    @Test
    public void test3() throws IOException {
        //加载核心配置文件
        InputStream resource = Resources.getResourceAsStream("config/sqlMapperConfi.xml");
        //获得sqlSession工厂对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resource);
        //获取sqlSession回话对象
        SqlSession sqlSession = factory.openSession();

        //删除
        sqlSession.delete("userMapper.deleteOne", 1L);
        //提交事务
        sqlSession.commit();
        //执行操作
        List<User> list = sqlSession.selectList("userMapper.findAll");
        list.forEach(System.out::println);
        //释放sqlSession
        sqlSession.close();
    }

配置

<mapper namespace="userMapper">
    <update id="upOne" parameterType="com.example.mybatis.entity.User">
        update user
        set username=#{username},
            password=#{password}
        where id = #{id}
    </update>
</mapper>

方法

核心
        //更新
        sqlSession.update("userMapper.upOne", user);
        //提交事务
        sqlSession.commit();
    //改
    @Test
    public void test2() throws IOException {
        User user = new User();
        user.setId(2L);
        user.setUsername("wan3gwu");
        user.setPassword("l345sa");
        //加载核心配置文件
        InputStream resource = Resources.getResourceAsStream("config/sqlMapperConfi.xml");
        //获得sqlSession工厂对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resource);
        //获取sqlSession回话对象
        SqlSession sqlSession = factory.openSession();

        //更新
        sqlSession.update("userMapper.upOne", user);
        //提交事务
        sqlSession.commit();
        //执行操作
        List<User> list = sqlSession.selectList("userMapper.findAll");
        list.forEach(System.out::println);


        //释放sqlSession
        sqlSession.close();
    }

配置

<mapper namespace="userMapper">
    <select id="findAll" resultType="com.example.mybatis.entity.User">
        select *
        from user
    </select>
</mapper>

方法

核心
        //执行操作
        List<User> list = sqlSession.selectList("userMapper.findAll");
//查
    @Test
    public void test1() throws IOException {
        User user = new User();
        user.setUsername("wangwu");
        user.setPassword("lkjjgsa");
        //加载核心配置文件
        InputStream resource = Resources.getResourceAsStream("config/sqlMapperConfi.xml");
        //获得sqlSession工厂对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resource);
        //获取sqlSession回话对象
        SqlSession sqlSession = factory.openSession();
        //执行操作
        List<User> list = sqlSession.selectList("userMapper.findAll");
        list.forEach(System.out::println);
        //新增
        sqlSession.insert("userMapper.insertOne", user);
        //提交事务
        sqlSession.commit();
        //释放sqlSession
        sqlSession.close();
    }

配置详解

configuration配置

  • properties属性
  • settings设置
  • typeAliases类型别名
  • typeHandlers类型处理器
  • objectFactory对象工厂
  • plugins插件
  • evironments环境
  • ervironnent环境变量
  • transactionManager事务管理器
  • datasource数据源
  • databaseldProvider数据库厂商标识
  • mappers映射器

environments

用于配置数据库的环境,支持多环境配置

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/syf?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;zeroDateTimeBehavior=CONVERT_TO_NULL&amp;allowPublicKeyRetrieval=true"/>
                <property name="username" value="root"/>
                <property name="password" value="syf20020816"/>
            </dataSource>
        </environment>
    </environments>

在这里插入图片描述

指定默认环境名称

<environments default="development">

指定当前环境名称

<environment id="development">

指定事务管理类型

这里是JDBC
JDBC:这个配置就是直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如JEE应用服务器的上下文)。默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将closeConnection属性设置为false来阻止它默认的关闭行为。

<transactionManager type="JDBC"/>

指定当前数据源类型

pooled表示连接池
UNPOOLED:这个数据源的实现只是每次被请求时打开和关闭连接
POOLED:这种数据源的实现利用“池”的概念将JDBC连接对象组织起来
JNDI:这个数据源的实现是为了能在如EJB或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用

<dataSource type="POOLED">

数据源的基本配置

<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/syf?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;zeroDateTimeBehavior=CONVERT_TO_NULL&amp;allowPublicKeyRetrieval=true"/>
<property name="username" value="root"/>
<property name="password" value="syf20020816"/>

标签顺序

按照这个顺序进行书写

<!ELEMENT configuration (

properties?,
settings?,
typeAliases?,
typeHandlers?,
objectFactory?,
objectWrapperFactory?,
reflectorFactory?,
plugins?,
environments?,
databaseIdProvider?,
mappers?

)>

mapper

用于加载映射
使用相对类路径的资源引用,例如: <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>

使用完全限定资源定位符(URL),例如: <mapper url="file:/var/mappers/AuthorMapper.xml"/>

使用映射器接口实现类的完全限定类名,例: <mapper class="org.mybatis.builder.AuthorMapper"/>

将包内的映射器接口实现全部主册为映射器,例如: <package name="org.mybatis.builder"/>

    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>

properties

实际开发中,习惯将数据源的配置信息单独抽取成一个properties文件,该标签可以加载额外配置的properties文件

<properties resource="properties/jdbc.properties"></properties>

我们把之前的配置进行抽取出来使用${}进行调用
在这里插入图片描述
在这里插入图片描述

jdbc.properties

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/syf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&allowPublicKeyRetrieval=true
username=root
password=syf20020816

改写sqlMapperConfig.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>
    <properties resource="properties/jdbc.properties"></properties>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driverClassName}"/>
                <property name="url"
                          value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--    加载映射文件-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

typeAliases

用于配置全限定名称生成别名
注意,这些标签都是有顺序的!

    <!--    自定义别名-->
    <typeAliases>
        <typeAlias type="com.example.mybatis.entity.User" alias="user"></typeAlias>
    </typeAliases>

使用别名进行改写

sqlMapperConfig.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>
    <properties resource="properties/jdbc.properties"></properties>
    <!--    自定义别名-->
    <typeAliases>
        <typeAlias type="com.example.mybatis.entity.User" alias="user"></typeAlias>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driverClassName}"/>
                <property name="url"
                          value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--    加载映射文件-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>

</configuration>


UserMapper.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">

<mapper namespace="userMapper">

    <select id="findAll" resultType="user">
        select *
        from user
    </select>
    <insert id="insertOne" parameterType="user">
        insert into user value (#{id},#{username},#{password})
    </insert>
    <update id="upOne" parameterType="user">
        update user
        set username=#{username},
            password=#{password}
        where id = #{id}
    </update>

    <delete id="deleteOne" parameterType="long">
        delete
        from user
        where id = #{id};
    </delete>
</mapper>
对应关系

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用SSM框架实现数据库的增删改查操作是一种常见的开发方式。SSM是指Spring+SpringMVC+MyBatis三个框架的整合。在此过程中,我们可以借助MyBatis提供的持久层框架来简化数据库操作。 首先,在项目的resources文件夹下建立database.properties文件,该文件用于配置数据库的连接信息,包括jdbc.driver、jdbc.url、jdbc.username和jdbc.password等。 接下来,我们可以根据需求创建对应的JavaBean实体类,对应数据库中的表结构,使用注解或XML配置文件来映射实体类与数据库表之间的关系。 然后,创建数据访问层(DAO)接口,定义一系列数据库操作的方法,如插入(新增)、删除、更新和查询等操作。在接口中可以使用MyBatis提供的注解或XML来配置与数据库的交互。 在DAO接口的实现类中,可以使用MyBatis提供的SQL映射和动态SQL特性来编写对应的数据库操作语句,如插入、删除、更新和查询语句。通过定义好的接口方法和SQL语句,实现数据库的增删改查操作。 最后,在业务逻辑层(Service)中,调用数据访问层的方法来实现具体的业务需求,并对数据进行处理和封装。在Spring框架中,可以使用注解或XML配置文件来管理和组织各个层级的组件。 综上所述,使用SSM框架实现数据库的增删改查操作需要进行配置数据库连接信息、创建实体类、定义DAO接口和实现类、编写SQL语句以及在Service层进行业务处理。这样就可以实现基于SSM的数据库操作了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [使用SSM框架实现增删改查操作](https://blog.csdn.net/qq_43537319/article/details/117549894)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [本科毕业设计-期末大作业-基于ssm+Mysql的宠物医院项目.zip](https://download.csdn.net/download/qq_35831906/88242837)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值