mybatis中有两个主要的配置文件:
1、mybatis-config.xml,这是核心配置文件,主要配置连接数据库的信息和SQL映射文件的位置信息。
该配置文件详细情况如下:
<?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">
<!--主配置文件 提供了数据库链接信息和sql映射文件的位置信息-->
<configuration>
<!--
mybatis-config.xml 文件加入日志配置,可以在控制台输出执行的 sql 语句和参数信息
settings:控制mybatis全局行为
-->
<settings>
<!-- 设置mybatis输出日志 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<!--起别名-->
<typeAliases>
<!--
type:是用来指定需要起别名的类
alias:是用来指定别名的名称
在使用别名的时候不区分大小写,比如:下行代码所起别名是student,使用的时候写成sTudent,也不会报错。
别名使用的位置是在xxxMapper.xml sql映射文件中查询语句的resultType中使用
在映射文件中namespace中不能使用别名
-->
<!--<typeAliastype="com.yjg.domain.Student"alias="student"></typeAlias>-->
<!--
下面这种写法更加简洁,会将指定包下的所有类全部自动起别名,别名就是简类名 如果指定包下的类有很多,这样写就特别方便
-->
<packagename="com.yjg.domain"/>
</typeAliases>
<!--
文件中有可能存在几个数据库信息,这里的default的值应该是其中一个数据库环境的id值,
在该文件中可以是"development",也可以是"online"-->
<environments default="development">
<!--
一个数据库信息的配置环境
id:是一个唯一值,自定义,表示该环境的名称
-->
<environment id="development">
<!--
transactionManager:表示mybatis的事务类型(JDBC或者MANAGED)
type="JDBC"(表示使用jdbc中的Connection对象的commit,rollback做事务处理)
type="MANAGED" 表示交给其它容器来管理事务,比如WebLogic、JBOSS等。如果没有管理事务的
容器,则没有事务。没有事务的含义:只要执一条DML语句,则提交一次。
-->
<transactionManager type="JDBC"/>
<!--
dataSource:表示数据源,连接数据库的
type的属性值:UNPOOLED|POOLED|JNDI
type="UNPOOLED" 表示不使用连接池
type="POOLED" 表示使用连接池
type="JNDI" 表示采⽤服务器提供的JNDI技术实现,来获取DataSource对象,不同的服务器所能拿到DataSource是不一样。如果不是web或者maven的war工程,JNDI是不能使用的。
-->
<dataSource type="POOLED">
<!--
driver,url,username,password 是固定的,不能自定义
-->
<!-- 数据库的驱动类名-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 连接数据库的url字符串-->
<property name="url" value="jdbc:mysql://localhost:3306/bjpowernode"/>
<!-- 访问数据库的用户名 -->
<property name="username" value="root"/>
<!-- 访问数据库的密码 -->
<property name="password" value="******"/>
</dataSource>
</environment>
<!--下面是另外一个数据库的配置环境信息-->
<environment id="online">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/bjpowernode"/>
<property name="username" value="root"/>
<property name="password" value="******"/>
</dataSource>
</environment>
</environments>
<!-- mappers 是指定sql映射文件的位置 -->
<mappers>
<!--
<mapper>标签可以有多个,每一个<mapper> 指定一个sql映射文件的位置
resource:是从类路径开始的路径信息, 从target/classes下开始的
具体操作是:在maven中编译代码(compile命令),然后去target/classes目录下找到StudentDao.xml文件,
在mapper文件上右击鼠标选择copy path命令,就可以得到该文件的全限定名称
-->
<!--
这里有四种配置方法,分别是:
<mapper resource="studentDao.xml"/> 这种方式studentDao.xml文件必须放到resource目录之下
<mapper url="d:///studentDao.xml"/> 这种方式在d盘下必须有studentDao.xml文件 不利于项目的移植
<mapper class="com.yjg.dao.StudentDao"/> 这种方式studentDao接口和studentDao.xml文件必须放到一起,在同一目录之下
<package name="com.yjg.dao"/> 这种方式使用最多,此时需要将studentDao接口和studentDao.xml文件都放到dao包下并且接口名和.xml文件的主名保持一致,这样dao包下的所有xxx.xml文件都配置好了,使用简单方便
注意:这里的xxxMapper.xml与xxxDao.xml都是指sql的映射文件
-->
<package name="com.yjg.dao"/>
</mappers>
</configuration>
2、XxxxMapper.xml,这个文件是专门用来编写SQL语句的SQL映射的配置文件。(一个数据库表对应一个)
t_user表,一般会对应一个UserMapper.xml
t_student表,一般会对应一个StudentMapper.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">
<!-- namespace:叫做命名空间,其值是唯一的,可以是自定义的字符串,这里要求你使用dao接口的全限定名称。-->
<mapper namespace="com.yjg.dao.StudentDao">
<!--
id:表示该查询语句的唯一标识,mybatis会根据这个id值来找到要执行的sql语句,要求使用接口中的方法称。
resultType:表示结果类型,是sql语句执行之后得到的ResultSet被遍历后得到的java对象的类型,其值为类型的全限定名称
-->
<select id="selectStudents" resultType="com.yjg.domain.Student">
select id,name,email,age from student order by id
</select>
<-- 注意:占位符#{},大括号里面写:pojo(或domain、bean、entity)类的属性名 -->
<!--
插入数据时获取自动生成的主键
useGeneratedKeys="true"表示使用自动生成的主键值,如果是"false"表示不使用自动生成的主键值
keyProperty="id"表示将主键值赋值给Student对象的id属性
-->
<insert id="insertStudent">
insert into student values (null,#{name},#{email},#{age})
</insert>
<!-- 根据id查询学生信息 -->
<!--
大家注意观察,resultType的值写的是Student类的全限定名称,写这样的名称一般都很长,这里可以写别名 ,别名是在mybatis-config.xml文件中定义的
-->
<select id="selectById" resultType="com.yjg.domain.Student">
select
name,email,age
from
student
where
id = #{id} //这里的{}内部的字符是任意的,但是不建议随便写,最好见名知意写对应实体类的属性名
</select>
</mapper>
以下是对映射文件中各部分的介绍:
<!-- 该文件是sql映射文件(英文名称:sql mapper) 在这里写sql语句 mybatis会执行该文件中的sql语句
1.指定约束文件部分:
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
其中:mybatis-3-mapper.dtd是约束文件的名称,其扩展名是.dtd
它的作用是:限制、检查在当前文件中出现的标签属性必须符合mybatis的要求
2.<mapper></mapper>是当前文件的根标签就如同HTML文件中的根标签是<html></html>一样
其中属性namespace:叫做命名空间,其值是唯一的,可以是自定义的字符串,这里要求你使用dao接口的全限定名称。
3.在该文件中可以使用特定的标签表示对数据库的特定操作
<select></select>:表示查询,这里写查询语句
id:表示该查询语句的唯一标识,mybatis会根据这个id值来找到要执行的sql语句,要求使用接口中的方法名称。
resultType:表示结果类型,是sql语句执行之后得到的ResultSet被遍历后得到的java对象的类型,其值为类型的全限定名称
<update></update>:表示更新,在此标签中写更新语句
<insert></insert>:表示插入,在此标签中写插入语句
<delete></delete>:表示删除,在此标签中写删除语句
-->