mybatis的知识点

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>

<!-- 加载properties配置文件 -->

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

<!-- mybatis起别名 -->

<typeAliases>

<!--

type: 起别名的类型

alias: 别名,别名没有大小写区分

<typeAlias type="cn.itcast.pojo.User" alias="user"/>

-->

<!--

批量扫描包,批量起别名

别名: 就是类名

-->

<package name="cn.itcast.pojo"/>

</typeAliases>

<!-- 和spring整合后 environments配置将废除 -->

<environments default="development">

<environment id="development">

<!-- 使用jdbc事务管理 -->

<transactionManager type="JDBC" />

<!-- 数据库连接池 -->

<dataSource type="POOLED">

<property name="driver" value="${jdbc.driver}" />

<property name="url"

value="${jdbc.url}" />

<property name="username" value="${jdbc.username}" />

<property name="password" value="${password}" />

</dataSource>

</environment>

</environments>

<mappers>

<!--

mapper标签:引入映射文件

url: 必须要写绝对路径

resource: 相对路径

-->

<mapper resource="User.xml"/>

<!--

Class属性: 指定接口的全路径名称

1: 接口文件和映射文件必须在同一个包下

2: 接口文件和映射文件必须名称相同,除了后缀名

<mapper class="cn.itcast.mapper.UserMapper"/>

-->

<!--

批量加载映射文件

1: 接口文件和映射文件必须在同一个包下

2: 接口文件和映射文件必须名称相同,除了后缀名

-->

<package name="cn.itcast.mapper"/>

</mappers>

</configuration>

<mapper namespace="test">:相当于一个名称如果有多个实体类里面有多个一样的方法,为了方便区分

CRUD

<select id="findById" parameterType="int" resultType="cn.itcast.pojo.User">

select * from user where id = #{id}

</select>

<!-- 模糊查询性张的 -->

<select id="findLikeusername" parameterType="string" resultType="cn.itcast.pojo.User">

select * from user where username like ‘%张%‘

</select>

<insert id="insertUser" parameterType="cn.itcast.pojo.User">

insert into user(username,sex,address,birthday) values(#{username},#{sex},#{address},#{birthday})

<selectKey keyProperty="id" resultType="int" order="AFTER">

select LAST_INSERT_ID()

</selectKey>

</insert>

<update id="updateUser" parameterType="cn.itcast.pojo.User">

update user set username = #{username}  where id = #{id};

</update>

<delete id="deleteUser" parameterType="cn.itcast.pojo.User">

delete from user where id = #{id}

</delete>

使用动态代理的方式开发

<mapper namespace="cn.itcast.mapper.UserMapper">:namespace必须是接口的全限定类名

而且xml配置文件必须的跟接口的名称保持一致

核心配置文件的dtd约束

<!DOCTYPE configuration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

配置文件的dtd约束

<!DOCTYPE mapper

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

5.6.1. #{}和${}

#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换。#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。

5.6.2. parameterType和resultType

parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。

resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中

5.6.3. selectOne和selectList

selectOne查询一条记录,如果使用selectOne查询多条记录则抛出异常:

org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:70)

selectList可以查询一条或多条记录。

自定义别名

<typeAliases>

<!-- 单个别名定义 -->

<typeAlias alias="user" type="cn.itcast.mybatis.pojo.User" />

<!-- 批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感) -->

<package name="cn.itcast.mybatis.pojo" />

<package name="其它包" />

</typeAliases>

必须在property上面和datasource下面

mybatis自带的别名

别名    映射的类型

_byte    byte

_long    long

_short    short

_int    int

_integer    int

_double    double

_float    float

_boolean    boolean

string    String

byte    Byte

long    Long

short    Short

int    Integer

integer    Integer

double    Double

float    Float

boolean    Boolean

date    Date

decimal    BigDecimal    这个是比double还要大的,如果银行开发double是容不下这么大的数字的就用这个

bigdecimal    BigDecimal 这个是比上面那个还要大

map    Map

7.4.1. <mapper resource=" " />

使用相对于类路径的资源(现在的使用方式)

如:<mapper resource="sqlmap/User.xml" />

7.4.2. <mapper class=" " />

使用mapper接口类路径

如:<mapper class="cn.itcast.mybatis.mapper.UserMapper"/>

注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

7.4.3. <package name=""/>

注册指定包下的所有mapper接口

如:<package name="cn.itcast.mybatis.mapper"/>

注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中

原文地址:https://www.cnblogs.com/guanzhuang/p/8214908.html

时间: 2024-11-09 02:04:37

mybatis的知识点的相关文章

Mybatis核心知识点总结(一)

一.初识Mybatis框架 mybatis是一个持久层的框架,是apache下的顶级项目. mybatis托管到goolecode下,再后来托管到github下(https://github.com/mybatis/mybatis-3/releases). mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句. mybatis可以将向 preparedStatement中的输入参数自动进行输入映射,将

那些你必须知道的MyBatis实用知识点

#一.MyBatis简介MyBatis的前身是Apache的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis.2013年11月迁移到GitHub,因此目前MyBatis是由GitHub维护的. ??同样作为持久层框架的Hibernate在前些年非常的火,它在配置了映射文件和数据库连接文件后就可以通过Session操作,它甚至提供了HQL去操作POJO进而操作数据库的数据,几乎可以使编程人员

myBatis基础知识点

1. Mybatis框架优缺点 优点: 1. 易于上手和掌握. 2. sql写在xml里,便于统一管理和优化. 3. 解除sql与程序代码的耦合. 4. 提供映射标签,支持对象与数据库的orm字段关系映射 5. 提供对象关系映射标签,支持对象关系组建维护 6. 提供xml标签,支持编写动态sql. 缺点: 1. sql工作量很大,尤其是字段多.关联表多时,更是如此. 2. sql依赖于数据库,导致数据库移植性差. 3. 由于xml里标签id必须唯一,导致DAO中方法不支持方法重载. 4. 字段映

2019-04-04 Mybatis学习知识点

1. 比较#和$的区别 #是占位符?,$是字符串拼接.因此使用$的时候,如果参数是字符串类型,那么要使用引号 尽量使用#而不是$ 当参数表示表名或列名的时候,只能使用$ 2. 多参数时候 配置文件中使用索引#{0}.#{1}代表第几个参数 在接口中使用注解@Param命名,在配置文件中使用注解的命名 接口使用Map类型作为形参,配置文件使用Map的key作为名称 3. 通过配置节点属性,可以把插入时候自动生成的key set回到对象中:也可以配置子节点在插入操作前执行SQL得到id存放入对象中

mybatis入门(三):mybatis的基础特性

mybatis的知识点: 1.mybatis和hibernate本质区别和应用场景 hibernate:是一个标准的ORM框架(Ojbect relation mapper对象关系映射).入门门槛较高的,不需要程序员写sql, sql语句自动生成了.对sql语句进行优化,修改比较困难. 应用场景: 适用于需求变化不多的中小型项目.比如后台管理,erp,orm,oa.. mybatis:专注于sql本身,需要程序员自己编写sql语句,sql修改,优化比较方便,mybatis是一个不完全的ORM框架

Java中SSM框架全面知识点,业务时间的精神食粮

------------------异常问题 :出现重复定义了访问路径java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'userController' bean method 406 请求头和响应头不匹配做ajax注册的时候 出现的问题 ClassNotFindException说明缺少jar包 或者名字写错 NoSuchBeanDefinitionException 如果BeanFactory在Sprin

MyBatis 知识点梳理

简单地梳理下MyBatis相关的知识点,主要想让自己重新捡起以前学的框架,如果能给广大程序猿朋友有所帮助那就更好了.有疏漏的地方也欢迎大家评论指出.闲言少叙,进入正题....... MyBatis知识梳理 简介(百度,随便看看) MyBatis最早源自Apache基金会的一个开源项目iBatis,2010年这个项目有Apache software foundation迁移到了google code,并且改名为MyBatis. MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架

MyBatis知识点总结(一)

前言:本篇主要记录在MyBatis学习过程中的主要知识点. 1.mybatis环境的搭建,通过maven可以快速的进行环境的搭建. 1 <!--文件版本--> 2 <properties> 3 <mybatis.version>3.4.5</mybatis.version> 4 <junit.version>4.12</junit.version> 5 <mysql-driver.version>5.1.38</my

MyBatis知识点整理

1.MyBatis一般使用步骤 1.1获取Configuration实例或编写配置文件 //获取Configuration实例的样例 TransactionFactory transactionFactory = new JdbcTransactionFactory();//定义事务工厂 Environment environment = new Environment("development", transactionFactory, dataSource); Configurat