课时13:多环境切换、注解方式与增删改返回值问题
.1)多环境切换
1.配置properties
#mysql的配置环境 mysql.driver=com.mysql.jdbc.Driver mysql.url=jdbc:mysql://localhost:3306/ssm mysql.username=root mysql.password=root #oracle的配置环境 这里需要自己动手改一下 改成上面的格式 <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="username" value="scott"/> <property name="password" value="tiger"/>
2.配置主配置文件环境
<environments default="envMysql"> <!-- mysql配置环境--> <environment id="envMysql"> <!-- 配置事务--> <transactionManager type="JDBC"> </transactionManager> <!-- 配置数据库连接信息--> <dataSource type="POOLED"> <property name="driver" value="${mysql.driver}"/> <property name="url" value="${mysql.url}"/> <property name="username" value="${mysql.username}"/> <property name="password" value="${mysql.password}"/> </dataSource> </environment> <!-- oracle环境配置--> <environment id="envOracle"> <!-- 配置事务--> <transactionManager type="JDBC"> </transactionManager> <!-- 配置数据库连接信息--> <dataSource type="POOLED"> <property name="driver" value="${oracle.driver}"/> <property name="url" value="${oracle.url}"/> <property name="username" value="${oracle.username}"/> <property name="password" value="${oracle.password}"/> </dataSource> </environment> </environments> <!-- 配置数据库支持类--> <databaseIdProvider type="DB_VENDOR"> <property name="MySQL" value="mysql"/> <property name="Oracle" value="oracle"/> </databaseIdProvider>
2.1 通过default来切换环境
2.2 通过支持类来配置支持哪些数据库
3.编写不同数据库sql
3.1 列如oracle:rownum mysql:limit
<select id="selectStudentById" resultType="student" parameterType="Integer" databaseId="oracle"> select * from student where stuno=#{stuno} </select> <select id="selectStudentById" resultType="student" parameterType="Integer" databaseId="mysql"> select * from student where stuno=#{stuno} </select>
3.1.1通过databaseId来找寻主配置里面配置的支持类别名
3.1.2 .select标签两个id可以一样,当你的环境时oracle的时候就是执行oracle的id里面的sql,当你的环境时mysql的时候就是执行mysql的id里面的sql
2.)注解方式开发
1.推荐使用xml开发(而注解开发适用于一些小项目)
2.如何使用注解开发
2.1 配置主文件的mapper标签 通过class来映射接口 为了是让程序知道你的sql语句是存在接口中
<mapper class="org.hbz.dao.IStudentDao"></mapper>
2.2无论是注解还是xml都可以可以一劳永逸的方式直接填写包名存在哪里 (批量引入) 以下的语句两种方式都兼容
<package name="org.hbz.dao"/>
3. 将sql语句写在接口的方法的上面
@Select("select * from student where stuNo=#{stuNo}") Student queryStudentByNo(int stuNo);
.3)增删改的返回值问题
1.返回值可以是void ,Integer,Long,Boolean
2.如何操作?只需要在接口的方法修改返回值