mybatis id 可以同名 吗_mybatis

一、Mybatis是什么

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二、Mybatis的作用

Mybatis是一个持久层框架,当然作用就是操作数据库的(增删改查)。Mybatis的理念:让开发者是10%的代码就可以实现数据库的操作。

解决方案: 持久层(DAO)的零实现. 所谓的零实现,就是不用写实现类代码,直接使用接口就可以操作数据库.可以自动将数据封装到对象里面不需要手工编写映射的关系

Mybatis的定义,提高开发的效率!写很少代码就可以实现增删改查。

三、Mybatis配置流程图

f29052741b971c099b1615695238e409.png

61d32d1f252349eef94f1063a3c36a70.png

四、配置流程说明

获得数据库连接

第一步:导入包(任何框架需要的事情)

c19f25659a9194d0830034ffef1a737c.png

第二步:创建总配置文件,文件名随便写 mybatis-config.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>
  <environments default="dev_mysql">
    <environment id="dev_mysql">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
        <property name="username" value="root"/>
        <property name="password" value="admin"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="xxx.xml"/>
  </mappers>
</configuration>

第三步:创建一个MybatisUtils工具类,(获得操作对象)

MyBatisUtil工具类的作用主要用于 读取配置文件,创建工厂对象,提供创建SqlSession数据库操作对象的方法

package cn.ss.mybatis.util;


import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {
	private MyBatisUtil() {
	}
	
	//SqlSessionFactory 会话工厂对象
	private static SqlSessionFactory  factory;
	//类加载到JVM中就立马执行static代码块,并且只会执行一次
	static {
		//资源文件
		String resource = "mybatis-config.xml";
		//try(){}catch(Exception e){} try的圆括号内部能够自动释放/关闭资源
		try(InputStream inputStream = Resources.getResourceAsStream(resource)) {
			//创建SqlSessionFactory 对象
			factory = new SqlSessionFactoryBuilder().build(inputStream);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	/**
	 * 创建SqlSession对象
	 * @return SqlSession对
	 */
	public static SqlSession openSession() {
		//创建Session对象
		SqlSession session = factory.openSession();
		return session;
	}

}

--需求:插入数据到数据库

第四步:创建一个映射接口 (mapper)

package cn.zj.mybatis.mapper;

import cn.zj.mybatis.pojo.User;

/*
 * 使用MyBatis的动态代理开发编写代码遵循四个原则
 *  1.映射文件的namespace命名空间的值必须是对应接口的全限定名
	2.映射文件的对应功能 id值必须等于映射接口中方法的名称
	3.映射文件的参数类型必须和接口中方法的参数类型一致
	4.映射文件查询的返回结果类型必须和接口的方法的返回数据类型一致,
		DML操作返回的受影响的行数,除外
 */
public interface UserMapper {

	int insertUserInfo(User u);
}

第五步:创建一个映射文件

<?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">
<!-- 配置映射
namespace : 命名空间(通俗说法: 给当前映射文件的唯一标识:起一个唯一的名字)	
 -->
<mapper namespace="cn.ss.mybatis.pojo.UserMapper">
	<!-- 新增操作
		id: 当前功能的唯一标识,和接口方法同名
		parameterType : 参数的类型
		useGeneratedKeys:是否返回数据库生成的主键 true是/false否 
		keyProperty : 数据库主键对应java的pojo对象的属性
		keyColumn : 数据表的主键列明
	 -->
	<insert id="insertUserInfo" parameterType="User" 
		useGeneratedKeys="true"
		keyProperty="id"
		keyColumn="id"
	></mapper>

第六步:在总配置文件加载映射文件。

第七步:编写测试插入数据代码

五、MyBatis的注解开发

MyBatis的映射配置除了使用xml配置以外,还支持注解配置sql语句

MyBatis提供了下面注解进行映射文件配置

8a20b8c9d3d4ae6707ff3b1891742093.png
//示例
public interface UserMapper {
	
	@Select("select id u_id,name u_name,password u_password,age u_age from user where id = #{id}")
	@Results({
        @Result(id=true,property="id",column="u_id"),
        @Result(property="name",column="u_name"),
        @Result(property="password",column="u_password"),
        @Result(property="age",column="u_age")
    })
	User selectByPrimaryKey(Integer id);
	
	@Select("select * from user")
	List<User> findAll();
	
	
	@Insert("insert into user (name,password,age)values(#{name},#{password},#{age})")
	@Options(keyProperty="id",useGeneratedKeys=true)
	int insertUserInfo(User user);
	
	@Delete("delete from user where id = #{id}")
	int deleteByUserId(Integer id);
	
	@Update("update user set name = #{name} ,password = #{password},age = #{age} where id = #{id}")
	int updateUserInfoById(User user);
	
}

注解映射的配置:

 <mappers>
  	<!-- 接口映射权限定名 -->
  	<mapper class="cn.zj.mybatis.mapper.UserMapper"/>
  </mappers>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值