mybatis搭建,参数传递,增删改查事务管理

1.mybatis概述

原是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation 迁移到了 Google Code,随着开发团队转投Google Code 旗下, iBatis3.x正式更名为MyBatis。
MyBatis 是一款优秀的持久层框架。

框架就是对技术的封装,让程序员可以快速使用,提高开发效率。

Java后端框架:

Mybatis:对jdbc进行封装,

Spring:对整个后端架构进行管理,

Springweb:对web层(servlet)进行封装

Springboot:对spring框架进行搭建

Linxu操作系统:mysql redis docker 开发好的项目部署到linux环境

Mybatis是一个优秀的数据持久层,(dao层 数据访问层 数据持久层)

Mybatis是对jdbc进行的封装,避免了jdbc中,手动设置参数,手动印射结果,可以使用 XML 或注解来配置和映射,将数据库中的记录映射成Java 的 POJO(Plain Old Java Objects,普通的 Java 对象,就是后台管理系统管理里面的model,将数据库后面返回的数据进行封装通过servlet传递到前端),是一种 ORM(ORM Object Relational Mapping 对象关系映射)实现.

Mybatis还提供了动态sql和数据缓存功能。

mybatis搭建

  1. 创建一个maven项目
  2. 导入mybatis jar包
  3. 创建一个全局的mybatis配置文件,配置数据库连接等
  4. 创建一个访问接口,定义方法
  5. 创建接口对应的印射文件,编写sql

1.idea2023版的可以直接创建一个普通的java项目会自动默认选择maven。

2.打开这个文件导入依赖

3.对mybatis全局配置进行设置,导入数据库连接的依赖

<?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>

<!--mybatis配置文件全局配置-->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/><!--打印日志,控制台输出信息-->
<!--        是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

<!--    为类配置别名-->
    <typeAliases>
<!--        <typeAlias type="com.ffyc.mybatisdemo.model.admin" alias="Admin"></typeAlias>&lt;!&ndash; 一次配置一个&ndash;&gt;-->
<package name="com.ffyc.mybatisdemo.model"/><!-- 一次配置一个包下面的-->
    </typeAliases>
    
    
<!--配置数据库连接-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
<!--          type="POOLED"数据库连接池 默认创建了十个连接对象,减少频繁创建销毁对象   -->
            <dataSource type="POOLED">
<!--                数据库连接配置-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/dormdb?serverTimezone=Asia/Shanghai" />
                <property name="username" value="root" />
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

<!-- 注册印射文件   -->
<mappers>
    <mapper resource="mappers/adminmapper.xml"></mapper>
</mappers>


</configuration>

4.创建接口定义方法,创建一个sql印射文件,

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="com.ffyc.mybatisdemo.dao.adminDao">
    <!--接口地址-->
<!--sql映射文件-->
<!--主要写sql实现 -->
    <insert id="insert" parameterType="com.ffyc.mybatisdemo.model.admin"
    useGeneratedKeys="true" keyProperty="id" keyColumn="id">
-- useGeneratedKeys="true" 返回自增主键
-- keyProperty="id"  定义接收属性
-- keyColumn="id" 定义主键列
        insert into admin(account,password) values (#{account},#{password})
    </insert>
    <delete id="delete" parameterType="int">
        delete from admin where id=#{id}
    </delete>
    <select id="findAdminByid"
            parameterType="int"
            resultType="admin">
        <!--id接口方法 parameterType参数类型 resultType返回对象-->
        select * from admin where id = #{id}
    </select>
    <select id="findAdminByaccount" parameterType="string" resultType="admin">
        select * from admin where account=#{account}
    </select>
    <select id="findAdminByidaccount" resultType="admin">
        select * from admin where id=#{id} and account=#{acc}
    </select>
    <select id="findAdmin" parameterType="admin" resultType="admin">
        select * from admin where id=#{id} and account=#{account}
    </select>
    <select id="findadmins" resultType="admin">
select * from admin
    </select>

</mapper>

 接口中定义的方法1都要在sql印射文件中实现,安装一个插件,就是接口方法前面的小鸟,点击就可以跳转到印射文件中对应的印射sql,并且在未安装插件时书写不会报错提示。

搭建完成后基本上就是对4 5步操作就行了

接口与印射文件对应的关系

mybatis全局配置要按照顺序进行配置

参数传递

1.单个参数传递

方法

void delete(int id);

对应sql印射文件, parameterType="int传入参数类型为int

<delete id="delete" parameterType="int">
        delete from admin where id=#{id}
    </delete>

多个参数传递

方法

 admin findAdminByidaccount(@Param("id") int id,@Param("acc") String account);

对应sql印射文件, resultType="admin"返回值类型

<select id="findAdminByidaccount" resultType="admin">
        select * from admin where id=#{id} and account=#{acc}
    </select>

对象参数

方法

admin findAdmin(admin a);

对应sql印射文件,此时#{}里面的id与account都应该时在admin中定义的属性。

<select id="findAdmin" parameterType="admin" resultType="admin">
        select * from admin where id=#{id} and account=#{account}
    </select>

本来返回对象为admin应该写全名,

com.ffyc.mybatisdemo.model.admin

因为在全局配置中进行了设置,所以可以直接写admin,配置如下,需要注意的是mybatis配置必须要按顺序。

<!--    为类配置别名-->
    <typeAliases>
<!--        <typeAlias type="com.ffyc.mybatisdemo.model.admin" alias="Admin"></typeAlias>&lt;!&ndash; 一次配置一个&ndash;&gt;-->
<package name="com.ffyc.mybatisdemo.model"/><!-- 一次配置一个包下面的-->
    </typeAliases>

配置完别名后返还对象就可以这样写

 

增删改查事务管理

数据库事务:数据库一种管理机制,是对一次连接数据库过程的管理,保证一次操作中,执行的多条sql,要么都执行,要么都不执行,例如转账

  1. 先从a减钱 sql1
  2. 再从b加钱 sql2

查询,查询操作通常不需要事务管理

 //1.读取配置文件
        Reader resourceAsReader = Resources.getResourceAsReader("mybatis.xml");
        //2.创建SqlSessionFactory对象,负责创建sqlsession对象(连接数据库的会话对象类似于connection)
        //SqlSessionFactory也只需要创建一次创建后不需要销毁
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsReader);
        //3.创建sqlsession对象
        SqlSession sqlSession = build.openSession();
        //创建接口代理对象
        adminDao mapper = sqlSession.getMapper(adminDao.class);
        admin adminByid = mapper.findAdminByid(1);
        System.out.println(adminByid);
        //关闭与数据库连接
        sqlSession.close();

增加,将一些固定步骤封装在jdbcUtil的静态方法中,使用的时候直接调用,

通过commit()(一定不可以写在finally中)提交事务,前面程序都没有问题执行这一步。上面的因为没有提交事务所以没有加入数据成功。增删改必须提交事务,查数据不需要提交事务。

印射文件

 <insert id="insert" parameterType="com.ffyc.mybatisdemo.model.admin"
    useGeneratedKeys="true" keyProperty="id" keyColumn="id">
-- useGeneratedKeys="true" 返回自增主键
-- keyProperty="id"  定义接收属性
-- keyColumn="id" 定义主键列
        insert into admin(account,password) values (#{account},#{password})
    </insert>

Mybatis返回值印射

例如数据库中的admin表的admin_gender列,开启这个设置后就可以印射到java对象中的admin的adminGender列中。

List<admin> findadmins();当方法返回值是一个集合时,

<select id="findadmins" resultType="admin">
select * from admin
    </select>

在sql印射文件,返回值类型还是admin,mybatis会自动将admin封装到List集合中去。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值