Mybatis框架

1.Mybatis框架:

  Mybatis是一个半自动的对象关系映射(ORM),实现结果集的自动封装,sql写到配置文件中;

  Mybatis使用的是DTD约束。

2.Mybatis模块调用:

    

3.SqlMapConfig.xml :Mybatis框架的核心配置。

    default=“MySql”---> 默认使用MySQL数据库

    映射配置中的resource=“”--> 单个对象的映射文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5
 6 <configuration>
 7
 8 <!-- 配置数据源 -->
 9     <environments default="mysql">
10         <environment id="mysql">
11             <transactionManager type="JDBC" />
12             <dataSource type="POOLED">
13                 <property name="driver" value="com.mysql.jdbc.Driver" />
14                 <property name="url" value="jdbc:mysql://localhost:3306/mydb1?characterEncoding=utf-8" />
15                 <property name="username" value="root" />
16                 <property name="password" value="admin" />
17             </dataSource>
18         </environment>
19
20         <environment id="oracle">
21             <transactionManager type="JDBC" />
22             <dataSource type="POOLED">
23                 <property name="driver" value="oracle.jdbc.driver.OracleDriver" />
24                 <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" />
25                 <property name="username" value="ht1602" />
26                 <property name="password" value="htdb" />
27             </dataSource>
28         </environment>
29     </environments>
30
31
32     <!-- 映射文件 -->
33     <mappers>
34         <mapper resource="pojo/UserMapper.xml" />
35     </mappers>
36
37 </configuration>

4.XXXMapper.xml:一张表对应一个对象,则所有关于这张表的增删查改的SQL都写在一个配置文件中。

  resultType="Javabean的全限定名" --> 将结果集自动封装到对象中

  ${ } 和 #{ } 的基本抉择:     

  作用:

    1.含有预编译的效果,能够防止sql注入攻击

    2.为参数添加了一对""号

  注意事项:

    如果sql语句中以列名为参数时,切记使用${Map中的key},必须配置Map一起联用.

  总结

    以列名为参数时使用${},其他的使用#{}

    能用#{}取值,决不用${}

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5
 6 <!-- namespace:唯一标识映射文件 -->
 7 <mapper namespace="pojo.UserMapper">
 8
 9     <!-- resultType: 将结果集自动封装到对象中 -->
10     <select id="find" resultType="pojo.User">
11         select * from account
12     </select>
13
14     <!-- #{对象的属性} -->
15     <insert id="adduser">
16         insert into account (id,name,money) values (null,#{name},#{money})
17     </insert>
18
19     <update id="updatauser">
20         update account set money=#{money} where id=#{id}
21     </update>
22
23     <!-- ${map中的Key} -->
24     <select id="selectByMoney" resultType="pojo.User">
25         select * from account where money > ${minMoney}  <![CDATA[and money< ${maxMoney} ]]>
26     </select>
27
28
29 </mapper>

   <![CDATA[ ... ]]> :大段转义字符;写在中括号内部的字符都将变成字符串输出。这样就避免了xml文件中的关键符号;一般在用xml作为数据传输格式时这个可以方便将整个xml文件输出字符串进行传输      

5.获取数据库连接(SqlSessionFactory):

  1.通过流读取Mybatis核心配置文件;

  2.创建SalSessionFactory对象;

  3.获取数据库连接(SqlSession);

6.执行数据库的CRUD:

  --->openSession()

 1 @Test
 2 public void test1() throws IOException{
 3
 4     //通过流读取Mybatis核心配置文件
 5     InputStream is = Resources.getResourceAsStream("sqlMapConfig.xml");
 6
 7     //获取SqlSessionFactory对象
 8     SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
 9
10     //从数据源中获取连接
11     SqlSession openSession = factory.openSession();
12
13     //执行sql ---namespace.id
14     List<User> list = openSession.selectList("pojo.UserMapper.find");
15
16     for (User user : list) {
17         System.out.println(user);
18     }
19
20 }

7.Mybatis中的多值传递问题

  如需求:

    要求查询年龄在18-22之间的人

  问题:在Mybatis中只支持单值的传递.多值传递时没有现成的API

  解决方法:

  可以将多个值转化为单个对象Map

  建议:

    如果是插入操作/更新操作,使用对象.其他的使用MAP

8.动态更新操作

  需求:

    如果某些数据只修改特定的值,其他参数不变,这时需要使用动态更新

  基本语法:

1 <update id="dynamicUpdate">
2     update user
3         <set>
4             <if test="name !=null">name=#{name},</if>
5             <if test="age !=null">age=#{age},</if>
6             <if test="sex !=null">sex=#{sex}</if>
7         </set>
8     where id=#{id}
9 </update>

  set标签的作用:去除where条件前多余的1个逗号

9.动态查询

  需求:

    根据对象中的属性值,查询信息

  方案:使用动态查询

  基本语法:

1 <select id="dynamicFind" resultType="pojo.User">
2     select * from user
3     <where>
4         <if test="id !=null">id=#{id}</if>
5         <if test="name !=null">and name = #{name}</if>
6         <if test="age !=null">and age = #{age}</if>
7         <if test="sex !=null">and sex = #{sex}</if>
8     </where>
9 </select>

  Where标签的作用:去除where后边多余1个的and      

时间: 2024-11-12 10:05:10

Mybatis框架的相关文章

MyBatis框架中Mapper映射配置的使用及原理解析(七) MapperProxy,MapperProxyFactory

从上文<MyBatis框架中Mapper映射配置的使用及原理解析(六) MapperRegistry> 中我们知道DefaultSqlSession的getMapper方法,最后是通过MapperRegistry对象获得Mapper实例: public <T> T getMapper(Class<T> type, SqlSession sqlSession) { final MapperProxyFactory<T> mapperProxyFactory =

MyBatis框架(一)

MyBatis介绍: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设置参数.结果集检索等jdbc繁杂的过程代

MyBatis框架中Mapper映射配置的使用及原理解析(三) 配置篇 Configuration

从上文<MyBatis框架中Mapper映射配置的使用及原理解析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder> 我们知道XMLConfigBuilder调用parse()方法解析Mybatis配置文件,生成Configuration对象. Configuration类主要是用来存储对Mybatis的配置文件及mapper文件解析后的数据,Configuration对象会贯穿整个Mybatis的执行流程,为Mybatis的执行过程提供必要的配

MyBatis框架中Mapper映射配置的使用及原理解析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder

在 <MyBatis框架中Mapper映射配置的使用及原理解析(一) 配置与使用> 的demo中看到了SessionFactory的创建过程: SqlSessionFactory sessionFactory = null; String resource = "mybatisConfig.xml"; try { sessionFactory = new SqlSessionFactoryBuilder().build(Resources .getResourceAsRea

MyBatis框架Maven资源

<!-- MyBatis框架 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <!-- MySql数据库驱动 --> <dependency> <groupId>mysql&

mybatis框架搭建学习初步

mybatis框架搭建步骤:1. 拷贝jar到lib目录下,而且添加到工程中2. 创建mybatis-config.xml文件,配置数据库连接信息 <environments default="development"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <dataSou

MyBatis框架知识整理

MyBatis框架 一.介绍: MyBatis实际上是Ibatis3.0版本以后的持久化层框架[也就是和数据库打交道的框架]! 和数据库打交道的技术有: 原生的JDBC技术---> Spring的JdbcTemplate技术 这些工具都是提供简单的SQL语句的执行,但是和我们这里学的MyBatis框架还有些不同,框架是一整套的东西,例如事务控制,查询缓存,字段映射等等. 我们用原生JDBC操作数据库的时候都会经过: 编写sql---->预编译---->设置参数----->执行sql

Mybatis框架之动态SQL书写方式小结

动态SQL简介 动态SQL是Mybatis框架中强大特性之一.在一些组合查询页面,需要根据用户输入的查询条件生成不同的查询SQL,这在JDBC或其他相似框架中需要在代码中拼写SQL,经常容易出错,在Mybatis框架中可以解决这种问题. 使用动态SQL元素与JSTL相似,它允许我们在XML中构建不同的SQL语句.常用元素为: 判断元素:if,choose 关键字元素:where,set,trim 循环元素:foreach if元素 if元素是简单的条件判断逻辑,满足指定条件时追加if元素内的SQ

Hibernate框架与Mybatis框架的对比

学习了Hibernate和Mybatis,但是一直不太清楚他们两者的区别的联系,今天在网上翻了翻,就做了一下总结,希望对大家有帮助! 原文:http://blog.csdn.net/firejuly/article/details/8190229 第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀的O/R mapping框架.目前属于apache的