mybatis基本配置和使用

附加jar包就不说了 从配置开始 我使用的版本是mybatis3.4.6

首先在src目录下 新建一个mybatis.xml的配置文件  这是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>

<!-- 配置类的别名 开始 -->
<typeAliases>
<package name="包名"/> <!-- 配置这个包下所有的类,别名都是简短类名,这样在映射配置中可以不用写完整类名 直接写简短类名-->
</typeAliases>
<!-- 配置类的别名 结束 -->

<!-- 配置第三方插件 开始(不是必须配置的,没有插件可以不用配置) -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper" /><!-- 配置分页插件(这个分页插件不是必须的 只不过可以借助这个插件实现分页查询 比较方便) -->
</plugins>
<!-- 配置第三方插件 结束 -->

<!-- 核心配置  数据源 开始 -->

<environments default="development">

<environment id="development">

<transactionManager type="JDBC" />

<dataSource type="POOLED">

<property name="driver" value="连接驱动jar包" />

<property name="url" value="数据库连接字符串" />

<property name="username" value="数据库用户名" />

<property name="password" value="数据库密码" />

</dataSource>

</environment>

</environments>

<!-- 核心配置  数据源结束 -->

<!-- 映射文件配置 开始 -->

<mappers>

<!-- 单独添加一个映射文件  <mapper resource="从src目录到当前映射的文件的路径"/>   -->

<package name="包名"/>  <!--  添加一个包的映射文件  如果使用这个方式配置 dao接口的名字必须和映射文件完全同名-->

</mappers>

<!-- 映射文件配置  结束-->

</configuration>

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="命名空间名 一般写dao接口的完整名 方便mybatis生成代理类" >

<!-- 配置结果集映射  有时候连接查询 或者表中列名与类中属性名不一致 mybatis无法自动封装成对象  手动指定对应关系

在 resultmap标签中 association标签 和 collection标签 可以随意嵌套 -->

<resultMap id="名字任意 唯一即可 "  type="要生成对象的类名" >

<id column="表中列名"  property="类中属性名"/> <!-- 配置主键使用这个标签 -->

<result column="表中列名"  property="类中属性名" /><!-- 配置主键使用这个标签 -->

<association property="类中对象属性名"  column="表中的列名,该列的值作为调用下一个select语句的参数 不是必须的"  javaType="对象的java类名"
select="只能引用别的select标签 跨映射文件 使用 命名空间.id 就可以引用 " >

<!-- 在association标签内 可以直接使用 <id/> 和<result/> 设置对象的属性值,association标签处理属性是对象-->
</association>

<collection property="类中集合属性名" column="表中的列名,该列的值作为调用下一个select语句的参数"  ofType="集合中存放的类型的类名"
select="只能引用别的select标签 跨映射文件 使用 命名空间.id 就可以引用 ">

<!--在collection标签内 可以直接使用 <id/> 和<result/> 设置集合中对象的值-->

</collection>

</resultMap>

<!-- 查询方法 -->

<sql id="与接口中查询的方法名一致queryAllUser"   resultType="返回值类型  之前配置了别名之后 这里可以只写简短类名"

parameterType="输入参数类型  常用类型mybatis已经配置过别名如String  Integer ,自己定义的类 配置过别名  也可以只写简短类名" 

resultMap="定义好的resultmap的标签的id值,   如果引用别的映射文件 加上命名空间.id"

>

查询语句   #{参数名} ,如果传入的是一个对象 想访问对象的属性值 #{对象名.属性名}

${参数名} 这样传入的参数 不会做为字符解析,会有被sql注入的风险  但是如果是 order by 排序  必须要使用这个传参

</sql>

<!-- 添加方法 -->

<insert id="" parameterType="输入参数类型  常用类型mybatis已经配置过别名如String  Integer ,自己定义的类 配置过别名  也可以只写简短类名"

如果想将插入信息之后 将主键值返回 可以设置 

useGeneratedKeys="true",
keyProperty="对象的主键属性名" keyColumn="主键列名" oracle数据库必须指定
insert方法的返回值还是受影响的行数,但保存的对象中主键属性已经是返回的主键值

>

插入语句

</insert>

<!-- 修改方法  -->

<update>

输入参数与其他标签一致   自动的返回值是受影响的行数

</update>

<! --  删除方法   -->

<delete>

输入参数与其他标签一致   自动的返回值是受影响的行数

</delete>

一般还会定义一个帮助类 获得mybatis的session对象

public class MybatisUtil {
    private static SqlSessionFactory sessionFactory;
    static{
        try {
            // 类加载时 实例化 SqlSessionFactory对象
            String resource = "mybatis.xml"; //指定核心配置文件名
            InputStream inputStream = Resources.getResourceAsStream(resource);
            //将配置文件读入输入字节流
            sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//使用SqlSessionFactoryBuilder类的build()方法 传入配置文件字节流
                                                                               //返回一个SqlSessionFactory对象实例 赋值给静态成员变量sessionFactory
             inputStream.close(); //关闭输入字节流
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static SqlSession getSession(){
        return sessionFactory.openSession();
    }
    private MybatisUtil(){}; //私有构造方法
}

这时候 通过MybatisUtil类静态方法getSession()就可以返回Sqlsession类的实例

测试代码  如下

public class test{

public static void main(String[] args){
 Sqlsession session=mybatisUtil.getSession();//获得sqlsession实例
 UserDao userdao=session.getMapper(UserDao.class);//通过sqlsession对象生成指定接口的实现类
  userdao.saveUser(new User("张三",18));//执行具体方法

}

}

再补充一下 动态sql

if标签 : 一般用于判断属性的值是否存在 如果存在 会将标签中的文本追加到sql语句后
<if test="stuName !=null and stunName !=‘‘ "> and stu_name like #{stuName} </if>

如果if标签中 判断的属性是一个对象,并且想判断这个对象属性的属性不为null,必须先判断这个属性不为null 才能判断这个这个属性的属性

例子: <if test="student !=null and student.stuName!=null">
--------------------------------------------------------------------

choose 标签: 多个条件 只选取其中一个 类似java中的switch
<choose>
<when test="表达式" >
sql语句
</when>

<when test="表达式" >
sql语句
</when>

<otherwise> <!-- 所有条件都不满足 默认执行这个 -->
sql语句
</otherwise>

</choose>
---------------------------------------------------------------------------------

where 标签: where元素会判断其包含的if标签是否有值 如果有值 会自动追加where语句 并且会去掉第一个and或者or

select * from t_student
<where>
<if test"stuSex!=null"> and stu_sex=#{stuSex} </if>
<if test"stuName!=null and stuName!=‘‘"> and stu_name=#{stuName} </if>
</where>

-----------------------------------------------------------------------------------

trim 标签: 可以给sql语句加前缀名和后缀名 并去除指定的字符
<trim prefix="前缀内容" suffix="后缀内容"
prefixesToOverride="如果以这个指定的文本开头将被删除 一般写AND|OR 去除多余and和or"
suffixToOverride="如果以这个指定的文本结尾将被删除 一般写 ,号 用于删除多余的,号"></trim>

------------------------------------------------------------
set 标签: 一般用于处理修改 动态生成要修改的列 判断if里面的值 如果有 会自动加上set 关键字 并且消除多余 ,号
<set>
<if test"stuSex!=null"> stu_sex=#{stuSex}, </if>
<if test"stuName!=null and stuName!=‘‘"> stu_name=#{stuName}, </if>
</set>
------------------------------------------------------------------
foreach 标签:可以遍历一个集合 可以用在动态删除和动态添加
<foreach item="代表集合中的每一个元素" index="index" collection="遍历的类型 如果是集合就写list 数组就写array"
open="以指定文本开头" separator="以指定文本分割每一个元素的值" close="以指定文本结尾">
</foreach>

原文地址:https://www.cnblogs.com/java888/p/10744702.html

时间: 2024-11-02 14:47:51

mybatis基本配置和使用的相关文章

笔记:MyBatis XML配置详解

MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息.文档的顶层结构如下: configuration 配置 properties 属性 settings 设置 typeAliases 类型命名 typeHandlers 类型处理器 objectFactory 对象工厂 plugins 插件 environments 环境 environment 环境变量 transactionManager 事务管理器 dataSource

Mybatis基本配置(一)

1. Mybatis介绍 MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. 2. 准备jar包 1)mybatis-3.3.0.jar, Mybatis包. 2)sqljdbc4.jar ,因为我们要用到SQLS

hao947 : Mybatis resultMap配置插入和主键自增返回 : 好947

映射配置文件  好947  <!-- type:映射实体类的数据类型 id:resultMap的唯一标识 -->  <resultMap type="person" id="BaseResultMap">   <!-- column:库表的字段名 property:实体类里的属性名 -->   <id column="person_id" property="personId" /&g

MyBatis MapperScannerConfigurer配置――MyBatis学习笔记之八

MyBatis MapperScannerConfigurer配置——MyBatis学习笔记之八 2012-09-02 20:01:42 标签:Spring MyBatis MapperScannerConfigurer bean默认命名 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://legend2011.blog.51cto.com/3018495/980150 在上一篇博文的示例中,我们在beans.xml中配置了stu

spring和mybatis整合配置

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p&

MyBatis 实践 --配置

MyBatis 实践 Configuration mybatis-configuration.xml是MyBatis的全局配置文件(文件名任意),其配置内容和顺序如下: properties : 属性(文件)加载/配置 settings : 全局配置参数 typeAliases : 定义类型别名 typeHandlers : 类型处理器 objectFactory : 对象工厂 plugins : 插件 environments : 环境集合属性对象 environment transactio

springmvc+spring+mybatis+mysql配置过程

环境:eclipse 项目目录: jar包: web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http:/

Mybatis中配置Mapper的方法

Mybatis中配置Mapper的方法 在这篇文章中我主要想讲一下Mybatis配置文件中mappers元素的配置.关于基础部分的内容可以参考http://blog.csdn.net/elim168/article/details/40622491. 我们知道在Mybatis中定义Mapper信息有两种方式,一种是利用xml写一个对应的包含Mapper信息的配置文件:另一种就是定义一个Mapper接口,然后定义一些相应的操作方法,再辅以相应的操作注解. 现假设我有这样一个实体类: Java代码 

MyBatis的配置和使用原理

MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old JavaObjects,普通的 Java对象)映射成数据库中的记录. MyBatis让程序将主要精力放在sql上,通过MyBatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句.

MyBatis -- configuration配置详解

1.configuration有什么作用? configuration管理MyBatis的配置,MyBatis的所有配置信息都存放的在configuration中. 下面我们看看configuration可配置的属性有哪些: 1.1  properties属性 实例: <properties resource="org/mybatis/example/config.properties"> <property name="username" val