最近参考其他大佬的博客整理了一个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 packagebean;2
3 public classUserBean {4 private intid;5 privateString username;6 privateString password;7 public intgetId() {8 returnid;9 }10 public void setId(intid) {11 this.id =id;12 }13 publicString getUsername() {14 returnusername;15 }16 public voidsetUsername(String username) {17 this.username =username;18 }19 publicString getPassword() {20 returnpassword;21 }22 public voidsetPassword(String password) {23 this.password =password;24 }25 @Override26 publicString toString() {27 return "UserBean [id=" + id + ", username=" + username + ", password=" + password + "]";28 }29 public UserBean(intid, String username, String password) {30 super();31 this.id =id;32 this.username =username;33 this.password =password;34 }35 publicUserBean() {36 super();37 }38 publicUserBean(String username, String password) {39 super();40 this.username =username;41 this.password =password;42 }43
44
45 }
6、在mybatis包下新建mybatis的配置文件,我的取名为mybatis,并在其中配置相关信息
7、在mapper包下创建方法接口Usesbean和对应的xml文件
UserMapper.java中的代码:
1 packagemapper;2
3 importjava.util.List;4
5 importbean.UserBean;6
7 public interfaceUserMapper {8 /**
9 * description select all users10 */
11 public ListselectAllUser();12
13 /**
14 * description insert15 */
16
17 public intinsertUser(UserBean userbean);18
19 /**
20 * description delete user by id21 *22 */
23 public int deleteUserById(intid);24
25 /**
26 * description update user27 *28 */
29 public intupdateUser(UserBean userbean);30
31 /**
32 * description select user by id33 *34 */
35 public UserBean selectUserById(intid);36
37 }
UserMapper.xml中的代码:
1 <?xml version="1.0" encoding="UTF-8"?>
2
3
4
5
6
7
8
9
10 select *from user11
12
13 insert into user(username,password)values(#{username},#{password})14
15
16 delete from user where id=#{id}17
18
19 update user set username=#{username},password=#{password} where id=#{id}20
21
22 select * from user where id=#{id}23
24
8、在mybatis的配置文件中加入新建的映射xml文件信息(如果是一个一个配置的话需要写该步骤,如果配置的是整个包,就不需要该步骤,只配置一次即可),在这里我配置的是整个包,所有该步骤忽略。
9、在tools包中新建一个工具类,并配置SqlSession等
1 packagetools;2
3 importjava.io.IOException;4 importjava.io.Reader;5
6 importjavax.annotation.Resource;7
8 importorg.apache.ibatis.io.Resources;9 importorg.apache.ibatis.session.SqlSession;10 importorg.apache.ibatis.session.SqlSessionFactory;11 importorg.apache.ibatis.session.SqlSessionFactoryBuilder;12
13 public classDB {14 public staticSqlSessionFactory sf;15 static{16 Reader reader;17 try{18 reader=Resources.getResourceAsReader("mybatis/mybatis.xml");19 sf=newSqlSessionFactoryBuilder().build(reader);20 } catch(IOException e) {21 e.printStackTrace();22 }23 }24 public staticSqlSession getSession(){25 returnsf.openSession();26
27 }28
29 }
10、在service包下根据mapper包下的接口类新建一个测试类,写业务逻辑。
1 package service;
2
3 importjava.util.List;4
5 importorg.apache.ibatis.session.SqlSession;6
7 importbean.UserBean;8 importmapper.UserMapper;9 importtools.DB;10
11 public classUserService {12 public static voidmain(String[] args) {
//根据情况将某个方法放开注释或加上注释13 selectAllUser();14 //insertUser();15 //deleteUserById();16 // updateUser();
17 }18
19 private static voidselectAllUser() {20 SqlSession session =DB.getSession();21 UserMapper mapper = session.getMapper(UserMapper.class);22 try{23 List 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 voidinsertUser() {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 voiddeleteUserById() {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 voidupdateUser() {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内容,本人小白,有什么错误或者不规范的地方请各位大佬提出意见或者建议~~