Mybatis的配置与使用
Mybatis的优点
1、 通过直接编写SQL语句,可以直接对SQL进行性能的优化;
2、 学习门槛低,学习成本低。只要有SQL基础,就可以学习mybatis,而且很容易上手;
3、 由于直接编写SQL语句,所以灵活多变,代码维护性更好。
4、 不能支持数据库无关性,即数据库发生变更,要写多套代码进行支持,移植性不好。
项目目录结构为图中画红色方框的,其它的为上一次作业的所写代码
Mybatis的配置
全局配置文件 :SqlMapConfig.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 6 <configuration> 7 <environments default="development"> 8 <environment id="development"> 9 <!-- 配置JDBC事务,此事务由mybatis管理 --> 10 <transactionManager type="JDBC"></transactionManager> 11 <!-- 数据库连接池 --> 12 <dataSource type="POOLED"> 13 <property name="driver" value="com.mysql.cj.jdbc.Driver"/> 14 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=UTC"/> 15 <property name="username" value="root"/> 16 <property name="password" value="root"/> 17 </dataSource> 18 </environment> 19 </environments> 20 <mappers> 21 <mapper resource="User.xml"/> 22 <package name="com.my.dao"/> 23 </mappers> 24 </configuration>
实体Bean:User.java
package com.my.dao; public class User { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", password=" + password + "]"; } }
配置mybatis中的User.xml文件
<?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="test"> <select id="findUserById" parameterType="int" resultType="com.my.dao.User"> SELECT * FROM USER WHERE id=#{id} </select> <insert id="addUser" parameterType="com.my.dao.User"> insert into user(username,password) value(#{username},#{password}) </insert> </mapper>
测试类:MybatisTest.java
package xiangmu; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import com.my.dao.User; public class MybatisTest { @Test public void findUserById() throws IOException { //mybatis配置文件路径 String resource="SqlMapConfig.xml"; //得到配置文件流 InputStream stream = Resources.getResourceAsStream(resource); //创建session工厂 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream); //得到sqlsession SqlSession sqlSession = sqlSessionFactory.openSession(); System.out.println(sqlSession); //第一个参数:映射文件User.xml中的全路径id,即namespace.id //第二个参数:传入的参数,该类型必须与User.xml中的parameterType的类型一致 User user = sqlSession.selectOne("test.findUserById", 1); System.err.println(user); } }
数据库的内容为:
运行结果如下
总结
学会了如何使用mybatis
本次实验的数据库jar包是基于8.x以上进行的
在mapper中配置insert语句时无需resultType属性