Mybatis的相关配置
1、Mybatis的核心配置文件为 sqlMapperConfig.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">
<!-- 上面的这个是Mapper文件的相关约束-->
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<!-- 下面的是用于配置连接池的-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db_gm" />
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
</environments>
<!--mappers 标签里面是写我们所编写的 xxxMapper.xml的sql操作文件 -->
<mappers>
<!--这里的话,如果使用xxxmapper.xml就要写入当前文件的位置信息,没有使用到Dao的话
如 mapper resource="xx/xxxmapper.xml" 来进行获取-->
<!--如引用了dao的接口类,由于我们是引用他的名字 所以,我们就要使用
如 mapper class="xx.xxxmapper.xml" 来表示-->
<!-- 用了 dao 层这里就用不到了-->
<!--<mapper resource="com/zhongruan/mapper/StudentMapper.xml"/>-->
<mapper class="com.zhongruan.dao.StudentMapper" />
</mappers>
</configuration>
2、相关的xxxmapper.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接口来实现sql操作的话 写上自己的对应的Dao名
如果是引用xxxmapper.xml文件的话那么就用 xxx.mapper 来命名 -->
<mapper namespace="xxx.mapper">
<!--这里的resultMap 是用于获取多个不连续的参数的,其中的主键我们必须用 id来表示,
而 column是输入对应的字段名, Property是输入类方法中对应的变量名-->
<resultMap id="UserList" type="com.zhongruan.bean.User">
<id column="id" property="id" />
<result column="username" property="username" />
<result column="password" property="password" />
</resultMap>
<insert id="" parameterType=""></insert>
<delete id="" parameterType=""></delete>
<update id="" parameterType=""></update>
<select id="" parameterType=""></select>
<!-- 上面是对应的 增删改查的数据库操作 ,这里的id可以随便取,如果用到Dao接口的话,
那么这里的id 必须和Dao接口对应的方法名字要保持一致 ,这里的parameterType是用来表示
数据接收的类型,跟Dao接口类里面的方法里面的参数的类型要一致-->
</mapper>
相关测试类的代码编写
1、当前这个是应用xxxmapper.xml文件来进行数据库操作
public void test1() throws IOException{
//1、先获取会话工厂构造器 sqlSessionFactorybuilder
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 指定连接配置信息文件
InputStream is = Resources.getResourceAsStream("sqlMapperConfig.xml");
//2、 根据构造器,获取会话工厂
// 会话的创建是需要io流来进行创建
SqlSessionFactory factory = builder.build(is);
SqlSession session = factory.openSession();
System.out.println("连接"+session);
// 如何测试id= "addStu" 这个动态sql
User userinfo = new User(8,"xiaoyu","1010");
int r1 = session.insert("StudentMapper.addStu",userinfo);
if(r1 > 0){
System.out.println("增加成功");
}
else{
System.out.println("增加失败");
}
System.out.println("结果为:"+r1);
//如果是运用了相关的增删改操作都需要会话提交,不然数据库是不会有变动的
session.commit();
// 操作完数据库就要将会话进行关闭
session.close();
}
2、现在这个是用于增加了Dao接口类的数据库操作代码
public void test2() throws IOException {
SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();
InputStream io = Resources.getResourceAsStream("sqlMapperConfig.xml");
SqlSessionFactory factory = factoryBuilder.build(io);
SqlSession session = factory.openSession();
// 多了一个dao方法要变了
// 这之前的操作是不变的,后面的获取方法不一样
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
User user = new User(9,"laowang","23");
int i = studentMapper.addStu(user);
System.out.println(i);
session.commit();
}
补充
关于xxmapper.xml获取参数的方法:
- 我们可以通过 Dao类的参数里面加上一个参数注解如:
void addUser(@Param(“user”) User userinfo);
给我们的变量进行命名,之后通过mapper.xml中的 #{user}来进行参数的获取,这里使用#{userinfo}是获取不到的。 - 第二个,我们可以直接用 #{0},#{1}来进行获取,Dao参数也是通过数据进行保存并传到mapper中的,所以我们可以通过直接写下标来进行参数的获取。