mybatis配置文件
写的很乱是为了让自己加深记忆用的
mybatis的配置文件
<!--声明关联的数据文件-->
<properties resource="db.properties"></properties>
<settings>
<!--是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--打开日志 STDOUT_LOGGING是mybatis自带-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!--打开懒加载-->
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
<typeAliases>
<!--一个类书写一个-->
<!--<typeAlias type="com.entry.TabAccount" alias="TabAccount"/>-->
<!--给包起别名-->
<package name="com.entry"/>
</typeAliases>
<!--environments数据源环境 一个项目可以有多个数据源 default="development" 默认数据源是development-->
<environments default="development">
<!--environment:一个数据源,每一个都有一个唯一的id-->
<environment id="development">
<!--transactionManager:事务管理 jdbc:jdbc自己管理事务 MANAGED:交给容器-->
<transactionManager type="JDBC"/>
<!--dataSource:数据源
pooled:数据库连接池的形式提供链接
UNPOOLED:普通数据源
JNDI:远程数据源
-->
<dataSource type="POOLED">
<property name="driver" value="${db.className}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.pwd}"/>
</dataSource>
</environment>
</environments>
<!--加载映射文件的-->
<mappers>
<mapper resource="com/mapper/TabAccountMapper.xml"/>
<!--这种命名方式要求 mapper.xml文件的namespace的值必须与mapper接口相对应
因为他是先定位到接口文件 然后因为namespace指定的接口 使mapper接口中的方法与mapper.xml文件的sql相对应
所以使用class指定mapper映射文件是必须有mapper接口,且mapper.xml文件的namespace值必须与mapper接口相对应
namespace值不能随便写-->
<!--<mapper class="com.mapper.TabAccountMapper"/>-->
<!--resource 是直接定位到mapper.xml文件 通过bean id定位SQL时可以不写mapper接口 mapper.xml 文件的namespace是可以随便写的-->
<mapper resource="com/mapper/TabRoleMapper.xml"/>
<mapper resource="com/mapper/TabDepartmentMapper2.xml"/>
<mapper resource="com/mapper/TabStaffMapper2.xml"/>
</mappers>
mapper.xml的配置文件
<!--命名空间:namespace:定位文件 id定位sql——namespace随便写 定位文件 id定位sql-->
<!--mapper.xml配合接口使用:namespace对应接口 id对应接口方法名 以后定位就直接找接口.方法()-->
<!--<mapper namespace="aaa">-->
<mapper namespace="com.mapper.TabAccountMapper">
<!--id定位sql_id对应方法名 resultType:映射的要求,每一行的数据类型是什么-->
<!--select:里边是查询sql-->
<select id="selectAccount" resultType="java.util.Map">
select * from tab_account
</select>
<select id="selectAccountById" resultType="java.util.Map">
select * from tab_account where accountid=1
</select>
<select id="selectAccount2" resultType="TabAccount">
select * from tab_account
</select>
<select id="selectAccountById2" resultType="TabAccount">
select * from tab_account where accountid=1
</select>
<select id="selectCountAccount" resultType="int">
select count(*) from tab_account
</select>
<!--接受参数一个Map #{key}-->
<insert id="insertAccount" parameterType="java.util.Map">
insert into tab_account(accountname,accountpassw)values(#{a},#{b})
</insert>
<!--实体 #{属性名}-->
<insert id="insertAccount2" parameterType="TabAccount">
insert into tab_account(accountname,accountpassw)values(#{accountname},#{accountpassw})
</insert>
<!--接收单一值 取值:#{随便写}-->
<delete id="deleteAccountById" parameterType="int">
delete from tab_account where accountid=#{id}
</delete>
<!--如果接收的是多个的时候,parameterType不写 #{param定义的别名}-->
<insert id="insertAccount3" >
insert into tab_account(accountname,accountpassw)values(#{accountname},#{pwd})
</insert>
</mapper>
测试方法
- 通过mapper接口获取方法并定位sql
此方法mybatis文件的指定mapper映射文件时不管是class 还是 resource 指定的mapper.xml文件的namespace的值都要与接口位置对应不能随便写
InputStream is= Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
/*一个数据源对应一个sqlSessionFactory,默认的哪一个*/
SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);
//执行sql
SqlSession sqlSession=sqlSessionFactory.openSession();
/*获取mapper接口*/
TabRoleMapper roleMapper=sqlSession.getMapper(TabRoleMapper.class);
List roleList=roleMapper.selectRole();
System.out.println(roleList);
TabAccountMapper mapper=sqlSession.getMapper(TabAccountMapper.class);//获取代理类——共性的代码给提取
List list=mapper.selectStaffAccount();
System.out.println(list);
- 通过bean id 定位sql
此方法mybatis文件的指定mapper映射文件时,使用class方式指定mapper.xml 文件时不能没有mapper接口mapper.xml文件的namespace的值要与mapper接口位置对应
如果使用resource指定mapper.xml 文件时是直接定位到mapper.xml文件与mapper接口无关
所以不要mapper接口namespace的值可以随便写
try {
InputStream is= Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
/*一个数据源对应一个sqlSessionFactory,默认的哪一个*/
SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(is);
//执行sql
SqlSession sqlSession=sqlSessionFactory.openSession();
//namespace定位文件 id定位sql
List<Map> list=sqlSession.selectList("aaa.selectAccount");
System.out.println(list);
} catch (IOException e) {
e.printStackTrace();
}

浙公网安备 33010602011771号