1.先创建sql配置 .XML 文件
我命名的是: sqlmapconfig.xml
主要作用:连接数据库,加载mapper.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>
//显示数据库操作日志,方便查看sql语句
<settings>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<!-- environments 设置数据库连接信息
environment 一个数据库连接源
transactionManager 事物机制
dataSource 数据库连接池 数据库连接信息和链接设置
-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!-- 数据库连接池-->
<dataSource type="POOLED">
<!-- 四个参数 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/hospital"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 开始加载所有的Mapper文件 -->
<mappers>
<mapper resource="MenuDaoMapper.xml"/>
</mappers>
</configuration>
2.创建Mapper.XML文件
由于是针对menu表进行操作的,所以我的命名是:MenuDaoMapper.xml
主要作用:创建sql语句
Mapper.XML文件注意点:
- 入参只能是一种类型
- select 语句是入参 parameterType 和出参 resultType都有
- insert,delete和update是只有入参 parameterType 没有出参,但是dao层是可以获得受影响行数
- dao层调用insert,delete和update语句时是需要 写session.commit(); 不写的话事务无法提交
- 写SQL语句时用#{}的话是使用的预状态通道
- 写SQL语句时用${}的话是使用的是状态通道
//头文件
<?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="MenuDaoMapper"> //这个name是在dao调用时需要用到
<!-- mapper中主要定义SQL语句 --> //每一个标签的id是在dao调用时需要用到
<select id="getOneMenu" parameterType="int" resultType="bean.MenuBean">
select * from menu where menuId = #{menuId}
<!-- #{menuId}这种的是预状态传参 -->
</select>
<insert id="getInsertMenu" parameterType="bean.MenuBean" >
insert into menu values(default,#{menuName},#{menuUrl},#{ztStatic},#{deleteZt})
</insert>
<delete id="getDeleteMenu" parameterType="int" >
delete from menu where menuId = #{menuId}
</delete>
<update id="getUpdateMenu" parameterType="bean.MenuBean" >
update menu set menuName = #{menuName} where menuId = #{menuId}
</update>
</mapper>
dao层例子:
//添加menu
public int getInsertMenu(MenuBean mb) {
int count = 0;
try {
SqlSessionFactory ssf = sfbs.getSqlSessionFactor();
SqlSession session = ssf.openSession();
count = session.insert("MenuDaoMapper.getInsertMenu", mb);
session.commit();
session.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return count;
在util层中写一个关于SqlSession的工具类以便dao层调用
我的命名是:SqlSessionFactoryBean
//创建一个返回值是SqlSessionFactor的SqlSession工厂类
public SqlSessionFactory getSqlSessionFactor() throws IOException{
/*定义核心配置文件*/
InputStream in = Resources.getResourceAsStream("sqlmapcofig.xml");
/*创建存sqlsession工厂*/
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
SqlSessionFactory ssf = ssfb.build(in);
return ssf;