本文章接着上篇内容,在其基础上做些改进,点击可进入上篇文章
修改1:Mybatis全局文件配置
1>在配置Mybatis全局文件配置的时候,我们需要链接数据库,以及输入用户名密码,在实际的开发过程中,不会直接把链接、用户名等直接写死而是类外写出来一个文件bd.properties,注意文件后缀就是.properties,不要后面再加一个.xml等多余后缀
创建bd.properties放在src目录下
jdbc.url=jdbc:mysql:///hzh
jdbc.driver=com.mysql.jdbc.Driver
jdbc.userName=root
jdbc.password=root
2>在Mybatis全局文件配置时,我们需要映射mapper接口,如果只有一个我们可以直接用昨天的
<mapper resource="com/yh/mapper/UserMapper.xml"/>
但是在实际的开发过程中,不会只有一个,往往是多个接口,这个时候我们就需要用<package/>标签来映射mapper文件目录。
<mappers>
<!--<mapper resource="com/yh/mapper/UserMapper.xml"/>-->
<!--<mapper resource="com/yh/mapper/User1Mapper.xml"/>-->
<package name="com.yh.mapper"></package>
</mappers>
这里需要注意:映射接口名和配置的.xml文件名需要一致,如图
最终配置文件代码:
<?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>
<!--将之前写的文件bd.properties导入进来-->
<properties resource="db.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--获取文件bd.properties中的值,用${} 大括号里面写key键名-->
<!--前面的name属性属于mybatis内置属性,不要随意修改-->
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.yh.mapper"/>
</mappers>
</configuration>
新增二:别名
在配置mapper文件的.xml文件时,我们输出和输入参数会写路径作为映射,写的多就非常麻烦,所以有了别名的出现,具体演示原版的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指的是UserMapper的路径名,mybatis全部是通过反射来操作数据库及文件的-->
<mapper namespace="com.yh.mapper.UserMapper">
<!--select 代表的是执行的是查询方法,同样 它可以替换为insert update delete-->
<!-- id是UserMapper类中的方法名代表执行的执行sql语句的方法-->
<!--resultType是返回值类型同样是路径,如果是基础数据类型可以直接写成int、string等。-->
<select id="getAll" resultType="com.yh.pojo.User">
<!--select 里面放的是执行的sql语句,为保证sql语句不出错,尽可能先在查询里面查询一次查看结果,如果无误再往里面填写-->
select * from user
</select>
<!--parameterType 传入参数的类型-->
<select id="findUsersByName" resultType="com.yh.pojo.User" parameterType="String">
<!--模糊查询可以使用$() 但是容易sql注入通常都用#{} 但是要提前对传入的参数做修改加上%或者其他符号-->
select * from user where username like "%${value}%"
<!--select * from user where username like #{userName}-->
</select>
</mapper>
<select> 里的resultType是"com.yh.pojo.User" 我们可以这样配置mydatis.xml文件:
<?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"></properties>
<typeAliases>
<typeAlias type="com.yh.pojo.User" alias="user"></typeAlias>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.yh.mapper"/>
</mappers>
</configuration>
注意:添加的是 <typeAliases> 标签,是配置在mydatis.xml文件里
如果实体类比较多,可以直接这样写
<?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"></properties>
<typeAliases>
<!--<typeAlias type="com.yh.pojo.User" alias="user"></typeAlias>-->
<package name="com.yh.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.yh.mapper"/>
</mappers>
</configuration>
这样写的话,这个包下的实体类会自动为实体类取别名,别名为类名的小写,比如com.yh.pojo.User的别名就为user。