Mybatis入门案例IDEA Mac(图文)

    科技2024-08-08  19

    目录

    1. 开发工具及环境2. 环境搭建2.1 创建工程2.2 数据库导入2.3 porm.xml文件编写2.4 User.java文件编写2.5 UserDao接口文件编写2.6 SqlMapConfig.xml主配置文件编写2.7 编写UserDao对应的配置文件2.8 环境终于搭建完成了 3. 入门案例3.1 案例编写3.2 案例结果 4. 添加增删改查操作4.1 增加用户基础步骤4.2 修改MybatisTest.java4.3 修改和删除用户4.4 查找特定的用户4.5 输出用户总数

    1. 开发工具及环境

    IDEAmysql 5.7.31terminal

    2. 环境搭建

    2.1 创建工程

    打开IDEA,点击 +Create New Project

    选择Maven–>jdk版本1.8–>直接Next(注:不要勾选create from archetype)

    输入groupId和工程名字,点击Finish

    2.2 数据库导入

    从百度云下载 mybatisdb.sql,就2k 🔗:https://pan.baidu.com/s/1L3pPpBAx9LM3mt2uOnyUmA 密码:2opl

    打开terminal,使用 mysql -u root -p打开数据库。create 一个新的数据库,建议 eesy_mybatis。进入该数据库。输入source,将mybatisdb.sql文件拖到terminal中,点击回车 然后就会有一大对文件自动注入。

    此时数据库导入已完成,输入 show tables,显示eesy_mybatis有以下表:

    2.3 porm.xml文件编写

    回到IDEA,当前IDEA目录如下所示

    打开porm.xml文件(一般自动成打开状态)

    在porm.xml中添加包和依赖,添加完后如下图所示

    2.4 User.java文件编写

    在main.java文件夹下创建User类 java–>New–>Java Class 输入com.kca.domain.User

    打开terminal,进入mysql,进入eesy_mybatis数据库,输入SQL:select * from user;,如下输出:

    在新建的User类中对应的字段名(如下所示,列名与实体类名相同)(图中第3步应该是:按住option+回车,导入java.util.Date,即可消除报错)

    在private String address;,下方点击右键,选择Generate,显示以下画面:

    选择Getter and Setter,显示以下画面: 全选–>OK,IDEA自动生成set get 函数

    public void setAddress(String address) { this.address = address; }

    下方,右键选择Generate,选择toString(),点击OK

    User类编写完成,如下所示: package com.kca.domain; import java.io.Serializable; import java.util.Date; /** * User实体类 */ public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", birthday=" + birthday + ", sex='" + sex + '\'' + ", address='" + address + '\'' + '}'; } }

    2.5 UserDao接口文件编写

    在main.java文件夹下创建UserDao接口 java–>New–>Java Class 输入com.kca.dao.UserDao,(注:此时应该选择Interface类型)

    此时目录如下所示:

    UserDao 是User的持久层接口,在这里编写各种操作的接口,例如现在我们要编写一个查询所有用户的操作,就在这里输入:List<User> findAll();

    2.6 SqlMapConfig.xml主配置文件编写

    右键resources–>New–>File 输入 SqlMapConfig.xml

    复制以下Config的约束的内容到SqlMapConfig.xml中:如下所示

    <?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"> 开始配置环境 输入<confuguratio,点击回车,自动生成 <configuration> </configuration>

    输入<environ,点击回车,自动生成

    <configuration> <!--配置环境--> <environments default=""> <environment id=""> <transactionManager type=""></transactionManager> <dataSource type=""></dataSource> </environment> </environments> </configuration>

    在default中输入mysql 在id中输入mysql(与上方一致) 在transactionManager type中输入JDBC 在dataSource type中输入POOLED

    完成后,SqlMapConfig.xml包括以下内容:

    <?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="mysql"> <!--配置mysql环境--> <environment id="mysql"> <!--配置事务类型--> <transactionManager type="JDBC"></transactionManager> <!--配置数据源(连接池)--> <dataSource type="POOLED"> </dataSource> </environment> </environments> </configuration> 配置数据库的四个基本信息,连接eesy_mybatis数据库 在<dataSource type="POOLED">内添加(XXXXXX为你自己的数据库密码) <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbs:mysql://localhost:3306/eesy_mybatis"/> <property name="username" value="root"/> <property name="password" value="XXXXX"/> 在</environments>下方添加<mappers>指定映射配置文件 <mappers> <mapper resource="com/kca/dao/UserDao.xml"/> </mappers> 主配置文件编写完成 <?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="mysql"> <!--配置mysql环境--> <environment id="mysql"> <!--配置事务类型--> <transactionManager type="JDBC"></transactionManager> <!--配置数据源(连接池)--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/> <property name="username" value="root"/> <property name="password" value="mxy10163"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/kca/dao/UserDao.xml"/> </mappers> </configuration>

    2.7 编写UserDao对应的配置文件

    右键resources–>New–>Directory–>输入com右键com–>New–>Directory–>输入kca右键kc a–>New–>Directory–>输入dao右键dao–>New–>File–>输入UserDao.xml 复制以下Mapper的约束的内容到UserDao.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 <mapper namespace="com.kca.dao.UserDao"> <!--配置查询所有--> <select id="findAll" resultType="com.kca.domain.User"> select * from user </select> </mapper>

    2.8 环境终于搭建完成了

    3. 入门案例

    3.1 案例编写

    右键test–>New–>Java Class 输入com.kca.test.MybatisTest首先定义main函数 public static void main(String[] args){ } 创建一个测试实力需要以下五个步骤 3.1读取配置文件 3.2创建SqlSessionFactory工厂 3.3使用工厂生产SqlSession对象 3.4使用SqlSession创建Dao接口的代理对象 3.5使用代理对象执行方法 3.6释放资源依次写入代码即可 public class MybatisTest { public static void main(String[] args)throws Exception{ // 1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(in); // 3.使用工厂生产SqlSession对象 SqlSession session = factory.openSession(); // 4.使用SqlSession创建Dao接口的代理对象 UserDao userDao = session.getMapper(UserDao.class); // 5.使用代理对象执行方法 List<User> users = userDao.findAll(); for (User user : users){ System.out.println(user); } // 6.释放资源 session.close(); in.close(); } }

    3.2 案例结果

    运行main函数,输出以下内容即为成功

    4. 添加增删改查操作

    4.1 增加用户基础步骤

    打开java–>com–>kca–>dao–>UserDao.java添加新增用户接口 void saveUser(User user);

    打开resources–>com–>kca–>dao–>UserDao.xml配置保存新用户 <select id="saveUser" parameterType="com.kca.domain.User"> insert into user (username,address,sex,birthday) values (#{username},#{address},#{sex},#{birthday}) </select>

    打开test–>java–>com–>kca–>test–>MybatisTest.java编写保存新用户操作 在之前main函数下方添加 /** * 保存新用户 */ @Test public void testSave()throws Exception{ User user = new User(); user.setUsername("mybatis saveUser"); user.setAddress("北京顺义"); user.setSex("男"); user.setBirthday(new Date()); // 1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(in); // 3.使用工厂生产SqlSession对象 SqlSession session = factory.openSession(); // 4.使用SqlSession创建Dao接口的代理对象 UserDao userDao = session.getMapper(UserDao.class); // 5.使用代理对象执行方法 userDao.saveUser(user); // 6.释放资源 session.close(); in.close(); } 运行testSave,成功后,查看数据库User表,新增名为【mybatis saveUser】的用户

    4.2 修改MybatisTest.java

    增加代码重用率

    在MybatisTest类中添加新的init方法

    此时main函数也可以改为普通的findAll方法

    将刚刚的创建代理对象的四个步骤粘贴到init中

    在init上方定义对象,并修改init中的代码

    在init下方添加新的destroy方法,并粘贴刚刚的释放步骤,并添加事物提交

    在init上方添加**@Before**,在destroy上方添加**@After**

    修改findAll与testSave,删除重复的。于是MybatisTest.java的代码如下所示:

    package com.kca.test; import com.kca.dao.UserDao; import com.kca.domain.User; 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.After; import org.junit.Before; import org.junit.Test; import java.io.InputStream; import java.util.Date; import java.util.List; /** *入门案例 */ public class MybatisTest { private InputStream in; private SqlSession session; private UserDao userDao; @Before public void init()throws Exception{ // 1.读取配置文件 in = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(in); // 3.使用工厂生产SqlSession对象 session = factory.openSession(); // 4.使用SqlSession创建Dao接口的代理对象 userDao = session.getMapper(UserDao.class); } @After public void destroy()throws Exception{ // 6.释放资源 session.commit(); //事务提交 session.close(); in.close(); } @Test public void findAll(){ // 5.使用代理对象执行方法 List<User> users = userDao.findAll(); for (User user : users){ System.out.println(user); } } /** * 保存新用户 */ @Test public void testSave(){ User user = new User(); user.setUsername("mybatis simplify"); user.setAddress("浙江杭州"); user.setSex("男"); user.setBirthday(new Date()); // 5.使用代理对象执行方法 userDao.saveUser(user); } } 先运行saveUser,再运行findAll,运行结果为:

    4.3 修改和删除用户

    在UserDao.java接口中添加updateUser接口与deleteUser接口 /** * 修改用户 */ void updateUser(User user); /** * 删除用户 */ void deleteUser(Integer id); 在UserDao.xml中添加SQL配置 <!--配置更新用户--> <update id="updateUser" parameterType="com.kca.domain.User"> update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}; </update> <!--配置删除用户--> <delete id="deleteUser" parameterType="Integer"> delete from user where id = #{uid} </delete> 在MybatisTest.java中添加新的测试代码 /** * 更新用户 */ @Test public void testUpdate(){ User user = new User(); user.setId(42); user.setUsername("mybatis update"); user.setAddress("北京市顺义"); user.setSex("男"); user.setBirthday(new Date()); // 5.使用代理对象执行方法 userDao.updateUser(user); } /** * 删除用户 */ @Test public void testDelete(){ userDao.deleteUser(51); } 运行testUpdate,数据库数据被修改运行testDelete,数据库数据被删除

    4.4 查找特定的用户

    在UserDao.java接口中添加testFindId接口与testFindName接口 /** * 根据Id查找用户 */ User findById(Integer id); /** * 根据名字查多个 */ List<User> findByName(String name); 在UserDao.xml中添加SQL配置 <!--配置按ID查询--> <select id="findById" parameterType="Integer" resultType="com.kca.domain.User"> select * from user where id=#{uid}; </select> <!--配置按名字查询--> <select id="findByName" parameterType="String" resultType="com.kca.domain.User"> select * from user where username like #{name} </select> 在MybatisTest.java中添加新的测试代码 /** * 按Id查找 */ @Test public void testFindId(){ Integer i = 43; User user = userDao.findById(i); System.out.println(user); } /** * 按姓名模糊查询 */ @Test public void testFindName(){ List<User> users = userDao.findByName("%王%"); for(User user : users){ System.out.println(user); } } 运行testFindId,数据库数据输出运行testFindName,数据库数据输出

    4.5 输出用户总数

    在UserDao.java接口中添加findTotal接口 /** * 查询总用户数 */ Integer findTotal(); 在UserDao.xml中添加SQL配置 <!--配置输出总用户数--> <select id="findTotal" resultType="Integer"> select count(id) from user </select> 在MybatisTest.java中添加新的测试代码 /** * 输出用户总数 */ @Test public void testTotal(){ int count = userDao.findTotal(); System.out.println(count); } 运行testTotal,输出用户总数
    Processed: 0.010, SQL: 8