欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mybatis框架1

程序员文章站 2022-03-10 17:09:01
...

Mybatis简介

  • Mybatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了google谷歌,并且改名为MyBatis
  • MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及对结果集的检索封装。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJO映射成数据库中的记录。

MyBatis的主要思想是将程序中的大量SQL语句抽取出来,配置在配置文件中,以实现SQL的灵活配置。

导包

Mybatis框架1

<!--MyBatis配置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>
    <!--加载配置文件-->
    <properties resource="jdbc.properties"></properties>
    

    <settings>
        <!--开启驼峰命名规则 使数据库的类似于u_age的字段名与pojo包下的属性名uAge能够匹配-->
       <setting name="mapUnderscoreToCamelCase"  value="true">
    </settings>

<!--类型别名-->

<typeAliases>
        <!--给User类起别名-->
        <typeAlias type="com.zhiyou.pojo.User" alias="user"/> 
        <!--给这个包下的所有类文件起别名-->
        <package name="com.zhiyou.pojo"/>
</typeAliases>

    <environments default="development">
    <environment id="development">
    <transactionManager type="JDBC"/>
    <dataSource type="POOLED">
    <property  name="driver" value="${jdbc.Driver}">
    <property  name="url"  value="${jdbc.url}">
    <property  name="username" value="${jdbc.name}">
    <property  name="password" value="${jdbc.password}"/>
    </dataSource>
    </environment>
    </environments>
<!--
    加载映射文件
    1.使用resource 属性,配置映射文件的路径
    2.使用class属性,配置映射文件所对应的接口,接口的完整名称
    3.【映射文件和接口放在同一个路径下
    映射文件名称和接口名称一模一样】
    4.使用package标签,配置包名       
    【映射文件和接口放在该包下
     映射文件名称和接口名称一模一样】       
-->
<mappers>
        <!--<mapper resource="com/zhiyou/mapper/UserMapper.xml"/>-->
        <!--<mapper class="com.zhiyou.mapper.UserMapper"/>-->
        <package  name="com.zhiyou.mapper"/>
</mappers>
</configuration>

 

Mybatis框架1

 

 MyBatis 内置日志工厂基于运行时自省机制选择合适的日志工具。它会使用第一个查找得到的工具(按上文列举的顺序查找)。如果一个都未找到,日志功能就会被禁用。

 

Mybatis框架1

 映射文件和映射接口文件

Mybatis框架1

 映射文件内容UserDao.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.zhiyou.dao.UserDao">
  <insert id="addUser">
   	insert into user(name) values(#{name1})
  </insert>
  
  <!-- 
  	id:对应的方法名
  	parameterType:参数类型(参数是简单类型时,可以不用设置)
  	resultType:返回值类型 (包名+类名)
  		结果映射时,需要保证数据库中的字段名和类中属性名称一致
  
  resultType:
  	返回值是集合时,resultType写集合中存放元素的类型
  	其他情况,就写对应的数据类型
  
   -->
  <select id="getUserById" parameterType="int" 
  resultType="user">
	  select * from user where id = #{id}
  </select>
  
  <select id="getAllUsers" resultType="com.zhiyou.pojo.User">
  	  select * from user
  </select>
  
  
  <select id="getPasswordByName" resultType="java.lang.String">
  	 select password from user where name=#{name}
  </select>
  
  
  <!-- 方法中有多个参数时:
  	1.根据参数的索引绑定参数,在映射文件中使用arg0,arg1.....
    2.根据@Param注解给参数绑定名称,在映射文件中使用@Param设置的名称
    3.把多个参数封装成对象,在映射文件中使用对象的属性名称
    4.把多个参数封装成map集合,在映射文件中使用map中的key值
    -->
  
  
  <insert id="addUserWithNameAndPsd">
  		insert into user(name,password)
  		values(#{name},#{pwd})
  
  </insert>
  
  <update id="updateUser" parameterType="User">
  		update user set name=#{name},password=#{password}
  		where id=#{id}
  </update>
  
  <select id="getUserWithIds" parameterType="map"
  resultType="user">
  	select * from user where id=#{key1}
  	or id=#{key2}
  
  </select>
  
  
  
  
</mapper>

映射接口

package com.zhiyou.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.zhiyou.pojo.User;

public interface UserDao {
	/**
	 * 插入一条记录
	 * @param name
	 */
	void addUser(String name);
	
	/**
	 * 根据id查询
	 * @param id
	 * @return
	 */
	User getUserById(int id);
	
	
	List<User> getAllUsers();
	
	//根据用户名查询密码
	String getPasswordByName(String name);
	
	
	void addUserWithNameAndPsd(@Param("name")String name,@Param("pwd")String psd);

	/**
	 * 更新数据
	 * @param user
	 */
	void updateUser(User user);
	
	/**
	 * 根据id查询
	 * @param map  key1=3   key2=4
	 * @return
	 */
	List<User> getUserWithIds(Map<String, Integer> map);
	
}

 

相关标签: MyBatis