关于Mybatis的配置,我会从一下两个方面来讲
先附上完整的配置文件,在对配置的内容慢慢讲解
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 配置数据源的信息 -->
<properties resource="jdbc.properties" />
<!-- 自动扫描类 -->
<typeAliases>
<package name="com.xx.entity"/>
</typeAliases>
<!-- 配置环境default为默认的环境 -->
<environments default="development">
<!-- 环境id,方便环境切换 -->
<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.xx.dao"/>
</mappers>
</configuration>
? ? ? ?从外部引入了一个properties文件,目的是方便对数据源配置的一些修改,小伙伴注意一下我的dataSourse配置的driver、url的写法是${driver}
、${url}
,并没有实际的值,实际的值其实是放置在jdbc.properties文件里面了
jdbc.properties配置文件如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
? ? ? ?你在进行实体映射时需要配置类的全类名才可以找到你需要对应的类
单个实体对应
<typeAliases>
<typeAlias alias="user" type="com.xx.entity.User"/>
<!-- 意思是以后在mapper文件配置实体时,写user等同于写com.xx.entity.User -->
</typeAliases>
自动扫描类
在一个项目中会有许多的实体,如果一个一个的配置会消耗很多不必要的时间,所以有了以下配置
<typeAliases>
<package name="com.xx.entity" />
<!-- 意思是让框架去com.xx.entity包里,将所有的实体类都自动完成对应,名称为类的首字母小写 -->
</typeAliases>
当然你可以自己通过@Alies注释,给实体类起别名
? ? ? ?配置Mybatis的运行环境
transactionManager中type的取值
dataSourse中的type的取值
? ? ? ?为了引入mapper.xml文件,有四种引入方式
<mappers>
<mapper resource="cn/learn/mapper/userMapper.xml" />
</mappers>
<mappers>
<package name="cn.learn.mapper" />
</mappers>
会自动去cn.learn.mapper包中将所有的.xml文件进行引入
<mappers>
<mapper class="cn.zyzpp.mapper.UserMapper" />
</mappers>
<mappers>
<mapper url="file:///cn/learn/mapper/userMapper.xml" />
</mappers>
<?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="test">
<!-- 通过id查询一个用户 -->
<select id="findUserById" parameterType="integer" resultType="com.itheima.domain.User">
select * from user where id=#{id};
</select>
<select id="findUserByUsername" parameterType="String" resultType="com.itheima.domain.User">
select * from user where username like '%${value}%';
</select>
<!-- 添加用户 -->
<insert id="insertUser" parameterType="com.itheima.domain.User">
INSERT INTO user (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address});
</insert>
<!-- 更新用户 -->
<update id="updatetUser" parameterType="com.itheima.domain.User" >
update user set username=#{username} where id=#{id};
</update>
<!-- 删除用户 -->
<delete id="deleteUser" parameterType="integer">
delete from user where id= #{id};
</delete>
</mapper>
? ? ? ?命名空间,用于隔离sql,当dao层采用mapper代理的创建方式时,namespace的值必须是接口的全类名
关于mapper.xml只是最基本的用法,关于一对多、多对多的映射会在接下来的文章进行讲解
原文:https://www.cnblogs.com/jwyddr/p/11707444.html