MyBatis的xml文件配置与sql编写测试

SpringDao JDBC技术
SpringMVC 技术
SpringAOP 切面编程
Spring ORM

Hibernate 技术mybatis技术
JAVAEE 服务器集合

Spring IOC技术
在这里插入图片描述

SpringData项目 外延技术 扩展功能
SpringBoot项目 简化Spring
不需要xml配置 不需要开启扫描,直接注入参数
Spring Cloud 技术 云服务 微服务
MyBais 简介
iBATIS --MyBtis( Googlecode) --MyBatis(Github 组件)
Mybatis作用:封装了JDBC应用,简化数据库访问。

优点如下:
封装了获取连接执行Sql、释放连接过程
封住了将ResultSet结果映射成实体对象过程
封装类将实体对象映射到SQL参数过程
封装了多表关联查询映射
封装了动态SQL技术、分页查询 、缓存技术

搭建myabtis基本环境

导入jar包

Mybatis.jar包 数据库驱动包ojdbc.jar oracle数据驱动包
mysql-connector-java-5.1.7-bin.jar mysql驱动包

添加配置文件

指定数据源连接参数
sqlmap-config.xml
指定SQL定义文件

<properties />属性
<settings />设置
<typeAliases />类型命名
<typeHandlers />类型处理器
<objectFactory />对象工厂
<plugins />插件
<environments>配置环境
    <environment>环境变量
        <transactionManager />事务管理器
        <dataSource />数据源
    </environment>
</environments>
<databaseIdProvider />数据库厂商标识
<mappers />映射器 
<?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="environment">
    	<environment id="environment">
    		<transactionManager type="JDBC"></transactionManager>
    		<dataSource type="POOLED">
    			<property name="url" value="jdbc:mysql://localhost:3306/test"/>
    			<property name="username" value="root"/>
    			<property name="password" value="123456"/>
    			<property name="driver" value="com.mysql.jdbc.Driver"/>
    	    </dataSource>
    	</environment>
    </environments>
    <!-- 指定sql定义文件 -->
    <mappers>
    	<mapper resource="com/tracy/sql/UserMapper.xml"/>
    </mappers>
</configuration>

实体类 属性名与数据库保持一致

属性名=字段名
实体类实现序列化 放到缓存中

使用框架封装类Interger 防止空指针异常 报错
文件路径/ UserMapper.xml

编写SQL语句 xml文件进行存放或注解

namespace=“userMapper” 命名空间进行区分
paramterType=“int” int 等价于java.lang.Integer

<mapper namespace="userMapper">
    <select id="findAll"   resultType="com.tracy.eneity.User">
        select * from user
    </select>
    
    <select id="findById" parameterType="Integer" resultType="com.tracy.eneity.User">
    	select * from user where id=#{id}
    </select>
    <insert id="save" parameterType="com.tracy.eneity.User" >
    	insert into user (id,name,pwd,head_img) values(#{id},#{name},#{pwd},#{head_img})
    </insert>
    <delete id="delete" parameterType="Integer">
    	delete user where id=#{id}
    </delete>
    <update id="update" parameterType="com.tracy.eneity.User" >
    	update user set name=#{name},pwd=#{pwd},head_img=#{head_img} where id=#{id}
    </update>
</mapper>

MybatisUtil 工具类

public class MybatisUtil {

public static SqlSession getSession() throws IOException {
	SqlSessionFactoryBuilder bulider=new SqlSessionFactoryBuilder();
//解析构造Reader对象
	Reader read=Resources.getResourceAsReader("sqlmap-config.xml");
	SqlSessionFactory factory=bulider.build(read);
	//传入配置文件,构建factory对象
	SqlSession session=factory.openSession();
	return session;
}

}

Mybatis 自动将数据提交设置为false 需要设置为自动提交
session.commit();

无效列类型 null属姓值为空
允许null值 jdbcType=VARCHAR
jdbcType类型
在这里插入图片描述

测试类

public class Test1 {

	  @Test
	  public void findAll() throws IOException { 
		  SqlSession session=MybatisUtil.getSession(); List<User>
	           list=session.selectList("findAll"); 
		  for(User user:list) {
	           System.out.println(user.getName()+"|||| "+user.getHead_img()); 
	      }
		}
	  
	  
	  @Test 
	  public void save() throws IOException {
		  SqlSession session=MybatisUtil.getSession(); 
	  User user=new User(); 
	  user.setId(222);
	  user.setName("hahahha1"); 
	  user.setPwd("123456"); 
	  user.setHead_img("1.jpg");
	  session.insert("save",user); 
	  session.commit(); 
	  session.close(); 
	  }
	 
	@Test
	public void findByID() throws IOException {
		SqlSession session=MybatisUtil.getSession();
	
		User user=session.selectOne("findById",222);
		 System.out.println(user.getName()+";;;; "+user.getHead_img());
		session.close();
	}
	@Test
	public void update() throws IOException {
		SqlSession session=MybatisUtil.getSession();
		  User user=new User(); 
		  user.setId(222);
		  user.setName("hahahha111111111"); 
		  user.setPwd("123456111111"); 
		  user.setHead_img("1111111111.jpg");
		session.update("update",user);
		session.commit();
		 System.out.println(user.getName()+";;;; "+user.getHead_img());
		session.close();
	}
	

}

Mapper映射器

作用·:Mapper映射器 可以自动触发SQL定义的操作
他实际是一个接口,按照一定的标准写出来,具体规则如下:
mapper namespacing=“”包名.Mapper接口名“”
Mapper接口方法中定义的方法需要跟SQL定义的id保持一致
参数类型需要跟SQL“定义的参数的类型一致
ResultType 查询数据特有 实现数据映射

DAO接口

public interface UserMapper {
	
	public List<User> findAll();
	public User findById(int id);
	public int update(User user);
	public int delete(int id);

}

不需要写实现类
Mapper接口相当于DAO实现类
UserMapper namespace=“”com.dao UserMapper“”

测试类

@Test
	public void findAll() throws IOException {
		SqlSession session=MybatisUtil.getSession();
		UserMapper userDao=session.getMapper(UserMapper.class);
		List<User> list=userDao.findAll();
		for(User user:list) {
			System.out.println(user.getName());
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值