Spring整合Mybatis
版本对应
1,pom文件依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.4</version>
</dependency>
<!--c3p0 连接池 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
2,Spring 的 XML 文件配置
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
或者也可以使用java类来配置sqlSessionFactory,和上面xml配置等效
@Bean
public SqlSessionFactory sqlSessionFactory() {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource());
return factoryBean.getObject();
}
3,配置数据源(也是配置在Spring的xml配置文件中)
<bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@192.168.24.102:1521:sms</value>
</property>
<property name="username">
<value>test</value>
</property>
<property name="password">
<value>test</value>
</property>
</bean>
还可以配置各种连接池例如
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value=" oracle.jdbc.driver.OracleDriver "/>
<property name="jdbcUrl" value=" "/>
<property name="user" value=" "/>
<property name="password" value=" "/>
</bean>
//此处连接池还有一些其他的属性配置这里就不一一写出来
4,创建mapper类和对应的mapper.xml文件
public interface GroupDao {
void addGroup(CheckGroup group);
void setGroupAndItemId(HashMap<String, Integer> map);
Page<CheckGroup> findPage(String queryString);
CheckGroup findById(Integer id);
List<Integer> findItemIdsByGroup(Integer id);
void deleteAssociation(Integer groupId);
void updataGroup(CheckGroup checkGroup);
void deleteGroupById(Integer groupId);
List<CheckGroup> findAll();
}
<?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="cn.chen.dao.GroupDao">
<insert id="addGroup" parameterType="CheckGroup">
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID()
</selectKey>
insert into t_checkgroup(code,name,sex,helpCode,remark,attention)
values
(#{code},#{name},#{sex},#{helpCode},#{remark},#{attention})
</insert>
<!-- 设置组和项的连接-->
<insert id="setGroupAndItemId" parameterType="hashmap">
insert into t_checkgroup_checkitem(checkgroup_id,checkitem_id)
values
(#{groupId},#{itemId})
</insert>
<!-- 查询分页-->
<select id="findPage" parameterType="String" resultType="CheckGroup">
select * from t_checkgroup
<if test="value != null and value.length > 0">
where code like #{value} or name like #{value}
</if>
</select>
<!-- 根据id进行查询单个group-->
<select id="findById" parameterType="int" resultType="CheckGroup">
select * from t_checkgroup where id = #{value}
</select>
<!-- 查找组包含的检查项-->
<select id="findItemIdsByGroup" parameterType="int" resultType="int">
select checkitem_id from t_checkgroup_checkitem where checkgroup_id = #{value}
</select>
<!-- 删除组和项关系-->
<delete id="deleteAssociation" parameterType="int">
delete from t_checkgroup_checkitem where checkgroup_id = #{value}
</delete>
<!-- 更新组信息-->
<update id="updataGroup" parameterType="CheckGroup">
update t_checkgroup
<set>
<if test="name != null">
name = #{name},
</if>
<if test="sex != null">
sex = #{sex},
</if>
<if test="code != null">
code = #{code},
</if>
<if test="helpCode != null">
helpCode = #{helpCode},
</if>
<if test="attention != null">
attention = #{attention},
</if>
<if test="remark != null">
remark = #{remark},
</if>
</set>
where id = #{id}
</update>
<delete id="deleteGroupById" parameterType="int">
delete from t_checkgroup where id = #{value}
</delete>
<!-- 查找所有检查组-->
<select id="findAll" resultType="CheckGroup">
select * from t_checkgroup
</select>
</mapper>
xml文件的namespace是对应的mapper类的文件路径,id则为mapper类的方法名,resultType为返回值类型
注意mapper接口类和对应xml文件需要配置java和resources路径下,最后打包完成才可以放到同一个目录下
5,在配置文件中写入包扫描路径
<!--包扫描-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.chen.dao"/>
</bean>
这样spring才知道哪里是你要扫描的包。
SpringBoot整合Mybatis
springboot相对spring来说步骤更为简洁
1,也是引入依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
2,在springboot配置文件中写入数据库连接信息
此处配置文件为springboot支持的yml文件非spring的xml文件
spring:
profiles:
active: dev #配置文件版本
application:
name: chenhaixin #服务名称
datasource: # 数据库连接四个属性
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/BYtest?characterEncoding=utf-8
username: root
password: 123456
3,编写mapper类和mapper对应的xml文件
@Repository
public interface UserMapper {
User findById(@Param("UserId")Integer userId,@Param("UserName")String username);
}
<?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="cn.chen.mapping.UserMapper">
<select id="findById" resultType="cn.chen.entity.User" >
select UserId,UserName from User where UserId = #{UserId} and UserName=#{UserName}
</select>
</mapper>
文件路径也是要统一
4,配置mapper包扫描
@MapperScan("cn.chen.mapping")
@SpringBootApplication
public class BYSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(BYSpringBootApplication.class,args);
}
}
在springboot启动类上打上MapperScan注解,路径为你mapper类的路径,这样springboot和mybatis就整合完成啦
5,配置连接池
springboot配置连接池也是非常简单,只要引入依赖如
<!-- 阿里系的Druid依赖包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
<!-- Druid 依赖 log4j包 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
spring:
profiles:
active: dev #配置文件版本
application:
name: chenhaixin #服务名称
datasource: # 数据库连接四个属性
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://116.85.35.70:3306/BYtest?characterEncoding=utf-8
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
springboot文件中加入datasource信息就ok咯