Mybatis教程2【配置文件】

MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置(settings)和属性(properties)信息。文档的顶层结构如下

configuration 配置
    properties 属性
    settings 设置
    typeAliases 类型别名
    typeHandlers 类型处理器
    objectFactory 对象工厂
    plugins 插件
    environments 环境
        environment 环境变量
            transactionManager 事务管理器
            dataSource 数据源
    databaseIdProvider 数据库厂商标识
    mappers 映射器

properties

配置一些常见变量,类似于spring中placeholder的作用。一般可以用来引入数据库配置、
在这里插入图片描述

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssm
username=root
password=123456

在这里插入图片描述

typeHandlers

ypeHandlers称做类型处理器。就是实现Java类型和数据库类型之间转换的。 除了系统提供的类型转换器之外,开发者也可以自定义类型转换,如下:

例如List<—>VARCHAR之间的类型转换:

自定义转换器

package com.sxt.myList;

import java.sql.CallableStatement;
import java.sql.JDBCType;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
/**
 * 自定义转换器,集合,字符串
 * @author Administrator
 *
 */
@MappedJdbcTypes(JdbcType.VARCHAR)
@MappedTypes(List.class)
public class MyList extends BaseTypeHandler<List<String>>{
	/**
	 * 将集合数据转换成字符床
	 */
	@Override
	public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType)
			throws SQLException {
		StringBuilder sb = new StringBuilder();
		for (String s : parameter) {
			sb.append(s).append(";");
		}
		String msg = sb.toString();
		ps.setString(i, msg);
		
	}
	/**
	 * 从集合里取出字符串转换成集合
	 */
	@Override
	public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {
		String st = rs.getString(columnName);
		return Arrays.asList(st.split(";"));
	}

	@Override
	public List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
		String st = rs.getString(columnIndex);
		return Arrays.asList(st.split(";"));
	}

	@Override
	public List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}

}

bean层

package com.sxt.bean;

import java.util.List;

public class Student {
	private Integer id;
	
	private String name;
	
	private List<String> games;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public List<String> getGames() {
		return games;
	}

	public void setGames(List<String> games) {
		this.games = games;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", games=" + games + "]";
	}
}

映射文件

<?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.sxt.dao.StudentDao">
	<select id="query" resultType="student">
				select * from t_student
	</select>
	<insert id="add" parameterType="student">
	insert into t_student(name,games)values(#{name},#{games})
	</insert>
	
	
</mapper>

接口【和映射文件在同级目录下名字相同】

package com.sxt.dao;

import java.util.List;

import com.sxt.bean.Student;

public interface StudentDao {
	public List<Student> query();
	
	public int add(Student stu);
}

配置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>
	<properties resource="db.properties" />
	<typeAliases>
		<package name="com.sxt.bean" />
	</typeAliases>
	<typeHandlers>
		<typeHandler handler="com.sxt.myList.MyList" />
	</typeHandlers>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	<!-- 注册映射文件 -->
	<mappers>
		<package name="com.sxt.dao" />
	</mappers>
</configuration>

在这里插入图片描述

mapper注册映射文件

映射器:我们添加的SQL语句的映射文件要被配置文件能够发现,在自动发现方面mybatis在这方面并没有实现,所以我们需要通过mapper标签来关联映射文件。

方式一:一个个扫描

  <!-- 注册映射文件 -->
  <mappers>
  	<mapper resource="com/sxt/dao/UserMapper.xml"/>
  </mappers>

这种配置方式,对mapper的文件名没有要求

方式二:扫描包
更简单更常用的方式,则是通过包扫描去加载mapper文件,这个时候对mapper文件名有要求,要求mapper文件名和mapper接口必须一致。

  <!-- 注册映射文件 -->
  <mappers>
  	<!-- <mapper resource="com/sxt/dao/UserMapper.xml"/> -->
  	<package name="com.sxt.dao"/>
  </mappers>

自定义别名映射

  <typeAliases>
  	<typeAlias type="com.sxt.bean.User" alias="user"/>
  </typeAliases>

在这里插入图片描述
可以批量扫描,自动生成别名,自动生成的别名是类型或者类名首字母小写

  <typeAliases>
  	<!-- <typeAlias type="com.sxt.bean.User" alias="user"/> -->
  	<package name="com.sxt.bean"/>
  </typeAliases>

注意自定义的别名使用的时候不区分大小写

测试

@Test
	public void query() {
		SqlSession session = Dbutils.getSession();
		StudentDao mapper = session.getMapper(StudentDao.class);
		//查询
		List<Student> query = mapper.query();
		System.out.println(query);
		//添加
		Student user = new Student();
		user.setName("zhangsan");
		user.setGames(Arrays.asList("x","m","n"));
		mapper.add(user);
		session.commit();
		session.close();
	}

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值