1、先在pom.xml文件中导入Mybatis的jar包与mysql-connector-java的jar包(需要在<dependencies>标签之中)
<dependency> <groupId>MysqL</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency>
2、在resource文件夹下编写mybatis-config.xml文件(即mybatis核心设置文件),该文件用于设置mybatis使用时的一些设置.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <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&serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <!-- 这是第一种注册mapper方法,通过resource路径来绑定--> <!-- <mapper resource="com/com.kuang/dao/UserMapper.xml"/>--> <!-- 这是第二种注册方法,通过包路径来注册,但是要求接口类和xml实现类同名--> <!-- <mapper class="com.com.kuang.dao.UserMapper"></mapper>--> <!-- 这是第三种注册方法,直接注册该报下的所有mapper,但是要求接口和实现类同名(和mapper标签的class属性来注册相同)--> <mapper class="com.kuang.dao.teacherMapper"></mapper> <mapper class="com.kuang.dao.studentMapper"></mapper> </mappers> </configuration>
3、然后编写MybatisUtils类用于在程序中获取sqlsession对象.(放在untils包下)
package com.kuang.utils; 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 java.io.IOException; import java.io.InputStream; public class MybatisUtils {//工具类,用于返回该mybatis项目的核心配置文件的sqlSession对象 private static sqlSessionFactory sqlSessionFactory; static{ try { String resource = "mybatis-config.xml";//获取mybatis的核心配置文件名 InputStream inputStream = Resources.getResourceAsstream(resource);//使用mybatis的核心配置文件名创建一个输入流 sqlSessionFactory = new sqlSessionFactoryBuilder().build(inputStream); //创建一个sqlSessionFactory(数据库会话工厂,用于创建sqlSession对象的),使用mybatis的核心配置文件名创建的字节输入流创建一个sqlSessionFactory }catch(IOException e) { e.printstacktrace(); } } public static sqlSession getsqlSession(){//用于获取sqlSession对象 return sqlSessionFactory.openSession(); } }
4、接下来就可以正式使用Mybatis框架来进行数据库操作了
我们可以编写一个实体类javaBeen(pojo类)来与数据库中的表一一对应.javaBeen即指成员变量都为private修饰类型(私有).通过get和set方法来对该类成员变量进行操作的类,并且有无参构造函数
如User类:
package com.kuang.pojo; //pojo包,其中存放的类都是实体类 public class User { private int id; private String name; private String pwd; public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } public User() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } }
要注意,该实体类的成员变量类型、名字必须和数据库该表中的数据类型、名字一一对应,如数据库中数据类型是varchar则该成员变量类型就为String.
5、接下来就可以开始编写对数据库数据的操作了
package com.kuang.dao; import com.kuang.pojo.User; import java.util.List; public interface UserMapper { public List<User> getUserList();//用于获取用户列表的方法 public User getGivenUser(int id);//获取特定用户的方法 public int addUser(User user); int deleteUser(int id);//根据id删除指定对象 int updateUser(User user);//更新对象 }
Mybatis实现用户操作需要先定义个数据操作接口,然后再编写对应的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="com.com.kuang.dao.UserMapper"> <!-- id是要实现方法的方法名,resultType是该方法的返回值--> <select id="getUserList" resultType="com.com.kuang.pojo.User"> select * from mybatis.user </select> <select id="getGivenUser" parameterType="int" resultType="com.com.kuang.pojo.User"> select * from mybatis.user where id=#{id} </select> <insert id="addUser" parameterType="com.com.kuang.pojo.User"> insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd}) </insert> <delete id="deleteUser" parameterType="int"> delete from mybatis.user where id=#{id} </delete> <update id="updateUser" parameterType="com.com.kuang.dao.UserMapper" > update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id} </update> </mapper>
6、我们可以创建测试类来测试数据操作是否可以正常操作
package com.kuang.dao; import com.kuang.pojo.User; import com.kuang.utils.MybatisUtils; import junit.framework.TestCase; import org.apache.ibatis.session.sqlSession; import org.junit.Test; import java.util.List; public class UserMapperTest extends TestCase { @Test //这是测试类,用于测试是否能够正常使用 public void testGetUserList() { //1、获得了sqlSession对象 sqlSession sqlSession = MybatisUtils.getsqlSession(); try{ UserMapper userMapper = sqlSession.getMapper(UserMapper.class);//使用class属性来获取类的class对象, List<User> userList = userMapper.getUserList();//执行语句 for(User user :userList) { //循环输出语句 System.out.println(user); } User givenUser = userMapper.getGivenUser(6);//如果在表中没有查询到该用户则返回null System.out.println(givenUser); }catch(Exception e){ e.printstacktrace(); }finally{ sqlSession.close();//关闭sqlSession流,非常重要,每次使用完后都需要记得关闭 } } @Test public void testAddUser(){ sqlSession sqlSession = MybatisUtils.getsqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class);//获取接口的class mapper.addUser(new User(5,"小王","1234561"));//插入数据 sqlSession.commit();//提交事务,不然数据库中的数据不会更新 sqlSession.close();//关闭sqlSession流 } @Test public void testupdateUser(){ sqlSession sqlSession = MybatisUtils.getsqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.updateUser(new User(5,"小张","12312321")); sqlSession.commit(); sqlSession.close(); } @Test public void testdeleteUser(){ sqlSession sqlSession = MybatisUtils.getsqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.deleteUser(5); sqlSession.commit(); sqlSession.close(); } }
想要使用自己编写的数据操作方法:
1、先调用MybatisUtils的getsqlSession()方法获取sqlsession对象.
2、调用获得的sqlSession对象使用它的GetMapper(实现操作接口名.class)获取Mapper对象
3、直接使用Mapper对象调用该方法.(如果调用的是update、insert、delete方法需要使用sqlSession.commit()把事务提交更新数据)
4、使用完毕记得将sqlSession关闭,使用sqlSession的close()方法.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。