Mybatis入门demo
最近参考其他大佬的博客整理了一个mybatis的入门小demo,话不多说,开始吧!
一、首先是Mybatis的介绍
(1)Mybatis是一款优秀的持久层框架。它支持定制SQL、存储过程及高级映射。通过映射的方式,灵活生成(半自动化,大部分需要程序员编写sql)满足需要的sql语句。
(2)Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集
(3)Mybatis可以使用简单的xml或注解来配置和映射原生信息,将接口和java的实体类映射成数据库中的记录。
二、Mybatis的执行流程
三、Mybatis开发步骤
1、新建web项目
2、导入所需要的jar包
3、创建数据库
4、建立所需要的包:bean、mapper、service、tools、mybatis
5、根据数据库中的表创建实体类
6、在mybatis包下新建mybatis的配置文件,并在其中配置相关信息
7、在mapper包下创建方法接口和对应的xml文件
8、在mybatis的配置文件中加入新建的映射xml文件信息(如果是一个一个配置的话需要写该步骤,如果配置的是整个包,就不需要该步骤,只配置一次即可)
9、在tools包中新建一个工具类,并配置SqlSession等
10、在service包下根据mapper包下的接口类新建一个测试类,写业务逻辑。
四、使用Mybatis开发的具体步骤
1、新建web项目,我的项目名称为mybatis_test
2、导入所需要的jar包
3、创建数据库
数据库的名称为mybatis_test,表名为user,结构如下:
4、建立所需要的包:bean、mapper、service、tools、mybatis
5、根据数据库中的表在bean包中创建实体类 :UserBean
1 package bean; 2 3 public class UserBean { 4 private int id; 5 private String username; 6 private String password; 7 public int getId() { 8 return id; 9 } 10 public void setId(int id) { 11 this.id = id; 12 } 13 public String getUsername() { 14 return username; 15 } 16 public void setUsername(String username) { 17 this.username = username; 18 } 19 public String getPassword() { 20 return password; 21 } 22 public void setPassword(String password) { 23 this.password = password; 24 } 25 @Override 26 public String toString() { 27 return "UserBean [id=" + id + ", username=" + username + ", password=" + password + "]"; 28 } 29 public UserBean(int id, String username, String password) { 30 super(); 31 this.id = id; 32 this.username = username; 33 this.password = password; 34 } 35 public UserBean() { 36 super(); 37 } 38 public UserBean(String username, String password) { 39 super(); 40 this.username = username; 41 this.password = password; 42 } 43 44 45 }
6、在mybatis包下新建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> <typeAliases> <typeAlias type="bean.UserBean" alias="UserBean" /> <!--或者使用以下的方式设置别名 <package name="bean" /> --> </typeAliases> <!--配置mybatis的运行环境 --> <environments default="cybatis"> <environment id="cybatis"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis_test" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <mappers> <!--配置方式也可一个一个配置,也可直接配置包 <mapper resource="mapper/UserMapper.xml"/>--> <package name="mapper" /> </mappers> </configuration>
7、在mapper包下创建方法接口Usesbean和对应的xml文件
UserMapper.java中的代码:
1 package mapper; 2 3 import java.util.List; 4 5 import bean.UserBean; 6 7 public interface UserMapper { 8 /** 9 * description select all users 10 */ 11 public List<UserBean> selectAllUser(); 12 13 /** 14 * description insert 15 */ 16 17 public int insertUser(UserBean userbean); 18 19 /** 20 * description delete user by id 21 * 22 */ 23 public int deleteUserById(int id); 24 25 /** 26 * description update user 27 * 28 */ 29 public int updateUser(UserBean userbean); 30 31 /** 32 * description select user by id 33 * 34 */ 35 public UserBean selectUserById(int id); 36 37 }
UserMapper.xml中的代码:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="mapper.UserMapper"> 4 <resultMap id="usermap" type="UserBean"> 5 <id property="id" column="id" javaType="java.lang.Integer" /> 6 <result property="username" column="username" javaType="java.lang.String" /> 7 <result property="password" column="password" javaType="java.lang.String" /> 8 </resultMap> 9 <select id="selectAllUser" resultMap="usermap"> 10 select * from user 11 </select> 12 <insert id="insertUser"> 13 insert into user(username,password)values(#{username},#{password}) 14 </insert> 15 <delete id="deleteUserById"> 16 delete from user where id=#{id} 17 </delete> 18 <update id="updateUser"> 19 update user set username=#{username},password=#{password} where id=#{id} 20 </update> 21 <select id="selectUserById" resultMap="usermap"> 22 select * from user where id=#{id} 23 </select> 24 </mapper>
8、在mybatis的配置文件中加入新建的映射xml文件信息(如果是一个一个配置的话需要写该步骤,如果配置的是整个包,就不需要该步骤,只配置一次即可),在这里我配置的是整个包,所有该步骤忽略。
9、在tools包中新建一个工具类,并配置SqlSession等
1 package tools; 2 3 import java.io.IOException; 4 import java.io.Reader; 5 6 import javax.annotation.Resource; 7 8 import org.apache.ibatis.io.Resources; 9 import org.apache.ibatis.session.SqlSession; 10 import org.apache.ibatis.session.SqlSessionFactory; 11 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 12 13 public class DB { 14 public static SqlSessionFactory sf; 15 static{ 16 Reader reader; 17 try { 18 reader=Resources.getResourceAsReader("mybatis/mybatis.xml"); 19 sf=new SqlSessionFactoryBuilder().build(reader); 20 } catch (IOException e) { 21 e.printStackTrace(); 22 } 23 } 24 public static SqlSession getSession(){ 25 return sf.openSession(); 26 27 } 28 29 }
10、在service包下根据mapper包下的接口类新建一个测试类,写业务逻辑。
1 package service;
2 3 import java.util.List; 4 5 import org.apache.ibatis.session.SqlSession; 6 7 import bean.UserBean; 8 import mapper.UserMapper; 9 import tools.DB; 10 11 public class UserService { 12 public static void main(String[] args) {
//根据情况将某个方法放开注释或加上注释 13 selectAllUser(); 14 // insertUser(); 15 // deleteUserById(); 16 // updateUser(); 17 } 18 19 private static void selectAllUser() { 20 SqlSession session = DB.getSession(); 21 UserMapper mapper = session.getMapper(UserMapper.class); 22 try { 23 List<UserBean> user = mapper.selectAllUser(); 24 System.out.println(user.toString()); 25 session.commit(); 26 27 } catch (Exception e) { 28 e.printStackTrace(); 29 session.rollback(); 30 } 31 } 32 33 private void insertUser() { 34 SqlSession session = DB.getSession(); 35 UserMapper mapper = session.getMapper(UserMapper.class); 36 try { 37 UserBean userbean = new UserBean("zs", "123"); 38 mapper.insertUser(userbean); 39 System.out.println(userbean.toString()); 40 session.commit(); 41 } catch (Exception e) { 42 e.printStackTrace(); 43 session.rollback(); 44 } 45 46 } 47 48 private static void deleteUserById() { 49 SqlSession session = DB.getSession(); 50 UserMapper mapper = session.getMapper(UserMapper.class); 51 try { 52 mapper.deleteUserById(3); 53 System.out.println("删除成功"); 54 session.commit(); 55 } catch (Exception e) { 56 e.printStackTrace(); 57 session.rollback(); 58 } 59 } 60 61 private static void updateUser() { 62 SqlSession session = DB.getSession(); 63 UserMapper mapper = session.getMapper(UserMapper.class); 64 UserBean userbean = mapper.selectUserById(4); 65 System.out.println("修改之前的userbean:" + userbean); 66 try { 67 userbean.setUsername("hhh"); 68 userbean.setPassword("111"); 69 mapper.updateUser(userbean); 70 System.out.println("修改之后的userbean:" + userbean); 71 session.commit(); 72 } catch (Exception e) { 73 e.printStackTrace(); 74 session.rollback(); 75 } 76 77 } 78 }
若UserService中的main方法中未加注释的方法是selectAllUser的方法,运行该main方法,查询到的结果为:
好啦,以上就是全部的demo内容,本人小白,有什么错误或者不规范的地方请各位大佬提出意见或者建议~~