在IDEA配置基本的mybatis
1.pom.xml中导包
1.mysql
2.mybatis
3.junit
4.build 静态资源过滤开启
(maven会把config.xml中的mapper.xml的映射mapper路径 资源过滤
了 target下面都没有mapper.xml这个文件)
在pom.xml
中设置能够被导出并把filtering过滤开启 回想尚学堂讲的filter去帮助sqlsession完成事物处理 而让Service层专注自己的sql操作
在< /dependecies>后面添加
- 上面的resource是管理resources下的peoperties或者xml文件,我们的
config.xml
放在Resource
下 - 上面的resource是管理java下的peoperties或者xml文件,我们的
mapper.xml
就放在java
下
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
2.配置文件 config.xml : 连接数据库+别名+映射mapper
在config.xml下连接数据库时不同版本mysql驱动包 配置不同
1不同版本的驱动网址不同
2?后面写的不同版本6以上还有地址
com.mysql.jdbc.Driver
是 mysql-connector-java 5中的,
?后拼接useSSL=true&useUnicode=true&characterEncoding=UTF-8
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?
useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
com.mysql.cj.jdbc.Driver
是 mysql-connector-java 6以上的
?后拼接characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm?
characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
3.mapper.xml 绑定命名空间同名mapper接口+sql语句
4.pojo
5.junit测试执行sqlsession.getMapper(mapper.class)返回的对象去调用方法
配置整合spring的mybatis
在pom.xml中导包
1.junit
2.mysql-connector-java
3.mybatis
4.spring-jdbc
5.spring-webmvc
6.spring-framework
7.aspectware
8.mybatis-spring
-
全局配置文件config.xml:写别名 + settings
-
mapper包:
1.mapper接口
2.mapper.xml写< mapper>标签 下的sql标签 -
pojo类
-
新增matis-spring的xml
-
要和 Spring 一起使用 MyBatis,需要在 Spring 应用上下文中定义至少两样东西:一个 SqlSessionFactory 和至少一个数据映射器类(spring的数据源)。
-
将config.xml中的environment全部删除并发现
property name="driverClassName" value="com.mysql.cj.jdbc.Driver"
的name从从前的driver改为driverClassName以数据源的形式 bean对象存入容器 -
原来service层的sqlsessionFactory那些对象直接在容器中获取
<!--spring的数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
以前需要读配置文件(环境/事物管理器/映射…)生成factory,现在factoryBean对象直接自己配置核心功能,直接能进行sql映射操作
在基础的 MyBatis 用法中,是通过 SqlSessionFactoryBuilder 来创建 SqlSessionFactory 的。 而在 MyBatis-Spring 中,则使用 org.mybatis.spring.SqlSessionFactoryBean
来创建。
SqlSessionFactory 有两个属性,其中有一个唯一的必要属性:用于 JDBC 的 DataSource。这可以是任意的 DataSource 对象,它的配置方法和其它 Spring 数据库连接是一样的。
<!--sqlsessionfactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
蓝色全部删除
另外一个常用的属性是 configLocation, configLocation用来指定 MyBatis 的 XML 配置文件(config.xml)路径。config.xml在需要修改 MyBatis 的基础配置非常有用。通常,基础配置指的是 < settings> 或 < typeAliases> 元素。
- 在spring-mybatis.xml的
< bean id="sqlsessionFactory">
标签下可以通过<property name="configLocation" value="classpath:config.xml"/>
绑定配置文件config.xml - 还可以通过
<property name="mapperLocations">
把config,xml中配置的mapper映射/别名都配置了
就是可以取代config.xml 但我们一般会留别名和< settings >在config.xml中 - 下图为property 中可以配置的东西
mapperLocations
属性接受多个资源位置。这个属性可以用来指定 MyBatis 的映射器 XML (mapper.xml)配置文件的位置。属性的值是一个 Ant 风格的字符串,可以指定加载一个目录中的所有文件,或者从一个目录开始递归搜索所有目录
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:config.xml"/>
<property name="mapperLocations" value="classpath:com/kuang/mapper/*.xml"/>
</bean>
现在完成了config.xml mapper.xml的配置,有了sqlsessionFactory我们要获得sqlsession进行事物操作了。
在容器当中配置sqlsessionSqlSessionTemplate类
这个bean,sqlsession是由sqlseesionFactory获得的,所以要将sqlseesionFactory依赖注入到sqlsession的对象中,
sqlsession的原码中显示它没有Set方法,但是由构造方法,并且构造方法的参数正是sqlseesionFactory,于是采用构造方法的依赖注入
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>
</bean>