Mybatis(上)

Mybatis(上)

传统 JDBC 编程
1、 加载数据库驱动
2、 创建并获取数据库链接
3、 创建 statement 对象
4、 拼写 sql 语句
5、 设置 sql 语句中的占位符的值
6、 执行 sql 语句并获取结果
7、 对 sql 执行结果进行解析处理
8、 释放资源

java框架

框架会将很多基本功能进行封装,程序员在框架基础上在进行业务开发。
代码简洁,开发高效。
了解框架主要功能

搭建框架:

添加框架依赖的jar
写配置文件
框架中提供自己的一些接口,实现某种功能。

mybatis:

原来是Apache的一个开源项目,2010年迁移到谷歌,更名为mybatis
数据访问层(数据持久层) Dao(data Access Object)
Controller Servlet属于控制层
View(前端)
是一个ORM框架。
ORM(Object Relational Mapping)
Object Relational Mapping

java对象 映射 数据库表

mybatis封装一些关于对数据库操作的一些接口,代替了jdbc

对jdbc进行了封装,简化操作。

mybatis环境搭建:

1、导入mybatis jar mysql驱动包

<dependency> 
	<groupId>org.mybatis</groupId> 
	<artifactId>mybatis</artifactId>
 	<version>3.4.2</version> 
 </dependency>

创建MyBatis 全局配置文件

MyBatis 的配置文件包含了对 MyBatis 行为的设置信息。 配置文档的顶层 结构如下(标签需要按照特定顺序排放):

configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)

1、先创建mybatis-config.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>
    <!--配置数据库连接的相关信息-->
    <environments default="development">
        <environment id="development">
            <!--配置事务管理类型,使用jdbc事务管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!--数据源-->
            <dataSource type="POOLED">
                <!--数据库驱动-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <!--数据库地址-->
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis_db?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai" />
                <!--数据库用户名密码-->
                <property name="username" value="root" />
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/AdminMapper.xml"/>
    </mappers>
</configuration>

2、创建SQL映射文件AdminMapper.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="com.ffyc.mybatis.mapper.AdminMapper">
    <insert id="saveData" parameterType="com.ffyc.mybatis.model.Admin">
        insert into admin(account,password,sex)values (#{account},#{password},#{sex})
    </insert>
</mapper>

插入数据

<?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="接口地址">
<insert id="接口方法名" useGeneratedKeys="把新增加的主键赋值到自己定义的 keyProperty "  keyProperty="接收主键的属性" parameterType="全类名地址">
(SQL语句:) insert into user(userName,userAge)values(#{userName},#{userAge}) 
</insert>
 </mapper>
 #{} 占位符,是经过预编译的,编译好 SQL 语句再取值,#方式能够防止 sql 注入
#{}:select * from t_user where uid=#{uid} 
$ {} 拼接符,会传入参数字符串,取值以后再去编译 SQL 语句,$ 方式无法防止 Sql 注入 $ {}
 $  {}:select * from t_user where uid= '1' 
 注意:MyBatis 排序时使用 order by 动态参数时需要注意,用$而不是#
  修改
  <update id="唯一标识" parameterType=“参数类型">
   update ts_user set userName = #{userName},userAge = #{userAge} where userId = #{userId}          		</update> 
  删除
  
<delete id="唯一标识" parameterType="参数类型">
   delete from ts_user where userId = #{id}
    </delete>
   查询
   
    <select id="唯一标识" resultType="返回结果集类型">
    select * from ts_user where id= #{id} 
    </select>

Mybatis-Dao 层 Mapper 接口
Mapper 接口开发方法只需要程序员编写 Mapper 接口(相当于 Dao 接口), 由 Mybatis 框架根据接口定义创建接口的动态代理对象.
使用 session.getMapper(接口.class);获得代理对象 Mapper 接口开发需要遵循以下规范:
1、 Mapper.xml 文件中的 namespace 与 mapper 接口的类路径相同。
2、 Mapper 接口方法名和 Mapper.xml 中定义的每个 statement 的 id 相同
3、 Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的 parameterType 的类型相同 4、 Mapper 接口方法的输出参数类型和 mapper.xml 中定义的每个 sql 的 resultType 的类型相同
在这里插入图片描述

测试
MyBatis 读取配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); 
创建 SqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
创建 SqlSession
SqlSession sqlSession = sessionFactory.openSession(); 

SqlSessionFactory 接口 一旦创建,SqlSessionFactory 就会在整个应用过程中始终存在。所以没有理由 去销毁和再创建它,一个应用运行中也不建议多次创建 SqlSessionFactory。如 果真的那样做,会显得很耗时。

SqlSession 接口

Sqlsession 意味着创建数据库会话,该接口中封装了对数据库操作的方法,与 数 据 库 会 话 完 成 后 关 闭 会 话 。
mybatis 中 使 用 SqlsessionFactory 的 openSession 方法创建。
Sqlsession 中的方法:
getMapper(Class class);获得接口代理对象
commit();提交事物
close();关闭
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值