1、pom文件中加入maven依赖 <br>
<!--MyBatis依赖--><br>
<!--MySQL驱动--><br>
静态资源文件:<br><resources><br> <resource><br> <directory>src/main/java</directory><br> <includes><br> <include>**/*.properties</include><br> <include>**/*.xml</include><br> </includes><br> <filtering>false</filtering><br> </resource><br> </resources>
3、创建mapper文件,也叫sql映射文件写sql语句的,mybatis会执行这些sql
1、指定约束文件<br><?xml version="1.0" encoding="UTF-8" ?><br><!DOCTYPE mapper<br> PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"<br> "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><br><br> mybatis-3-mapper是约束文件的名称,扩展名是dtd的。<br>
2、约束文件作用:限制,检查在当前文件中出现的标签,属性必须符合mabatis的要求
3、mapper是当前文件的根标签,必须的。<br> namespace:叫做命名空间,唯一值的,可以是自定义的字符串。<br> 要求使用dao接口的全限定名称。
4、在当前文件中,可使用特定的标签,表示数据库的特定操作<br><select> <update><insert><delete>
5、id:要执行的sql语法的唯一标识,mybatis会根据id值找到要执行的sql语句,建议和接口名方法一致<br> resultType:表示结果类型的,sql语句执行后得到ResultSet,遍历ResultSet得到java对象的类型,值<br>写类型的全限定名称。<br>
例:<br> <select id="selectStudents" resultType="com.kx.bean.Student"><br> select id, name, email, age from Student order by id<br> </select><br> <insert id="insertStudent"><br> insert into student values(#{id},#{name},#{email},#{age})<br> </insert>
mybatis主文件配置
<?xml version="1.0" encoding="UTF-8" ?><br><!DOCTYPE configuration<br> PUBLIC "-//mybatis.org//DTD Config 3.0//EN"<br> "http://mybatis.org/dtd/mybatis-3-config.dtd">
//configuration根标签<br><!--环境配置:数据库的连接信息--><br> <environments default="online"><br> <!--environment:一个数据库信息的配置环境<br> id(development):一个唯一值,自定义,表示环境名称<br> default:必须和某个environment的id值一样。<br> 告诉mybatis使用哪个数据库的连接<br> --><br> <environment id="development"><br> <!--transactionManager:mybatis的事务类型<br> type:JDBC(表示使用jdbc中的Connection对象的commit,rollback做事务处理)<br> --><br> <transactionManager type="JDBC"/><br> <!--dataSource:表示数据源,连接数据库的<br> type:表示数据源的类型,POOLED表示使用连接池<br> --><br> <dataSource type="POOLED"><br> <!--driver、url、username、password固定不能自定义--><br> <property name="driver" value="${driver}"/><br> <property name="url" value="${url}"/><br> <property name="username" value="${username}"/><br> <property name="password" value="${password}"/><br> </dataSource><br> </environment><br><br> <environment id="online"><br> <transactionManager type="JDBC"/><br> <dataSource type="POOLED"><br> <property name="driver" value="com.mysql.cj.jdbc.Driver"/><br> <property name="url" value="jdbc:mysql://localhost:3306/ssm"/><br> <property name="username" value="root"/><br> <property name="password" value="123456"/><br> </dataSource><br> </environment><br> </environments><br>
<!--settings:控制mybatis全局行为--><br> <settings><br> <!--设置mybatis输出日志--><br> <setting name="logImpl" value="STDOUT_LOGGING"/><br> </settings><br> <!--环境配置:数据库的连接信息-->
<!--sql mapper(sql映射文件)的位置--><br> <mappers><br> <!--一个mapper标签指定一个文件的位置<br> 从类路径开始的路径信息。 target/classes<br> --><br> <mapper resource="org/kx/dao/StudentDao.xml"/><br> </mappers><br>
主要类的介绍<br>
1、Resources:mybatis中的一个类,负责读取主配置文件<br>InputStream in = Resources.getResourceAsStream("mybatis.xml");
2、SqlSessionFactoryBuilder:创建SqlSessionFactory对象<br>SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);<br>
3、SqlSessionFactory:重量级对象,程序创建一个对象耗时比较长,使用资源多。<br> 在这个项目中,有一个就够用了。<br>SqlSessionFactory:接口,接口实现类:DefaultSqlSessionFactory<br>SqlSessionFactory作用:获取SqlSession对象<br>SqlSession sqlSession=sqlSessionFactory .openSession();<br>openSession()方法说明:<br>1、openSession():无参数的,获取是非自动提交事务的SqlSession对象<br>2、openSession(boolean):openSession(true)获取自动提交事务的SqlSession<br> openSession(false)非自动提交事务的SqlSession<br>
4、SqlSession<br>SqlSession接口:定义了操作数据的方法,例如:selectOne/selectList/insert/update/delete/commit/rollback<br>SqlSession接口的实现类DefaultSqlSession。<br>使用要求:SqlSession对象非线程安全,需在方法内部使用,执行完sql后,需关闭,执行sqlSession.close()。<br>
MyBatis工具类获取sqlSession
public class MyBatisUtils {<br> private static SqlSessionFactory sqlSessionFactory = null;<br><br> static {<br> String config = "mybatis.xml"; //需要和你的项目中的文件名一致<br> try {<br> InputStream in = Resources.getResourceAsStream(config);<br> //创建SqlSessionFactory对象<br> sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);<br> } catch (IOException e) {<br> e.printStackTrace();<br> }<br> }<br><br> //获取SqlSession的方法<br> public static SqlSession getSqlSession() {<br> SqlSession sqlSession = null;<br> if (sqlSessionFactory != null) {<br> sqlSession = sqlSessionFactory.openSession(); //非自动提交事务<br> }<br> return sqlSession;<br> }<br>}