博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
整合Mybatis框架相关
阅读量:4622 次
发布时间:2019-06-09

本文共 11896 字,大约阅读时间需要 39 分钟。

【参考文档】

mybatis官网
http://www.mybatis.org/mybatis-3/zh/index.html
教程
https://www.yiibai.com/mybatis/mybatis-curd.html
【Maven工程】

1273068-20180718171306587-251923770.png

1273068-20180718171323427-963224186.png
1273068-20180718171344835-2011720286.png
1273068-20180718171408100-1014249475.png
【添加依赖】
mybatis.xx.jar mysql-connector-java.xx.jar
手动改下版本号,再从maven依赖网站下载对应jar,放到本地
1273068-20180718171648178-1595553053.png
1273068-20180718171749502-993953836.png
【查询demon】
新增resources/config目录
1273068-20180718180027770-2109764841.png
Configure.xml
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。后面的测试类会读取Configure.xml,构建SqlSessionFactory,获取session。url中的&为了满足格式要求,具体是时区和SSL配置。通过读取User.xml配置mapper。

User.xml

UserMapper命名空间,测试类会调用,likailun.Mybatis.User对应结果集。

User.java

package likailun.Mybatis;public class User {    private int id;    private String name;    private String dept;    private String phone;    private String website;        public String getWebsite() {        return website;    }    public void setWebsite(String website) {        this.website = website;    }    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 getDept() {        return dept;    }    public void setDept(String dept) {        this.dept = dept;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }    }

UserTest.java

首先读取Configure.xml,通过SqlSessionFactoryBuilder构建sqlSessionFactory,读取对应mapper方法,进行查询。

package likailun.Mybatis;import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class UserTest {    private static SqlSessionFactory sqlSessionFactory;    private static Reader reader;    static {        try {            reader = Resources.getResourceAsReader("config/Configure.xml");            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);        } catch (Exception e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        SqlSession session = sqlSessionFactory.openSession();        try {            User user = (User) session.selectOne("UserMapper.GetUserByID", 1);            if (user != null) {                System.out.println(user);            }        } catch (Exception e) {            System.out.println(e);        } finally {            session.close();        }    }}

运行UserTest

1273068-20180718180643177-426341878.gif

【注解方式】

换用注解方式,之前mapper是通过Configure.xml添加,User.xml配置的。新增加UserTest1.java UserMapper.java Configure1.xml
1273068-20180719094544790-1722363242.png

Configure1.xml注释掉了UserMapper

UserMapper.java 增加注解方法

import org.apache.ibatis.annotations.*;public interface UserMapper {       @Select("select * from user where id = #{id}")    User getUserByID(int id);}

UserTest1.java

sqlSessionFactory增加mapper改用

sqlSessionFactory.getConfiguration().addMapper(UserMapper.class);

调用mapper则用

UserMapper mapper = session.getMapper(UserMapper.class);User user = mapper.getUserByID(1);
public class UserTest1 {    private static SqlSessionFactory sqlSessionFactory;    private static Reader reader;    static {        try {            reader = Resources.getResourceAsReader("config/Configure1.xml");            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            sqlSessionFactory.getConfiguration().addMapper(UserMapper.class);        } catch (Exception e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        SqlSession session = sqlSessionFactory.openSession();        try {            UserMapper mapper = session.getMapper(UserMapper.class);            User user = mapper.getUserByID(1);            if (user != null) {                System.out.println(user);            }        } catch (Exception e) {            System.out.println(e);        } finally {            session.close();        }    }}

1273068-20180719095318793-845721022.gif

【实际应用】

实际应用时,UserMapper中主要写接口,User.xml主要写语句,且保证namespace和UserMapper相同,mybatis才能找到。
1273068-20180719104337289-698034720.png
Configure2.xml中com.mysql.cj.jdbc.Driver时6之后新驱动

User2.xml中likailun.Mybatis.UserMapper2和UserMapper2.java的路径相同,之后可以试下不相同时,报错信息。

UserMapper2.java注解去掉

public interface UserMapper2 {    User getUserByID(int id);}

UserTest2.java中,原先addMapper部分不需要,因为配置文件已经添加,后面仍调用mapper方法。

public class UserTest2 {    private static SqlSessionFactory sqlSessionFactory;    private static Reader reader;    static {        try {            reader = Resources.getResourceAsReader("config/Configure2.xml");            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);        } catch (Exception e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        SqlSession session = sqlSessionFactory.openSession();        try {            UserMapper2 mapper = session.getMapper(UserMapper2.class);            User user = mapper.getUserByID(1);            if (user != null) {                System.out.println(user);            }        } catch (Exception e) {            System.out.println(e);        } finally {            session.close();        }    }}

1273068-20180719105344904-230361508.gif

【增删改查CURD】

1273068-20180720092209286-1899372822.png

UserMapper.java

public interface UserMapper {    public User getUserByID(int id);        public List
getUserList(); public void insertUser(User user); public void updateUser(User user); public void deleteUser(int id);}

Configure.xml

User.xml

insert into user(name, dept, website,phone) values(#{name}, #{dept}, #{website}, #{phone})
update user set name = #{name}, dept = #{dept}, website = #{website}, phone = #{phone} where id = #{id}
delete from user where id = #{id}

UserTest.java

public class UserTest {    private static SqlSessionFactory sqlSessionFactory;    private static Reader reader;    static {        try {            reader = Resources.getResourceAsReader("config/Configure.xml");            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);        } catch (Exception e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        deleteUser();    }        public static void insertUser()    {        try        {            SqlSession session = sqlSessionFactory.openSession();            UserMapper mapper = session.getMapper(UserMapper.class);            User user = new User();            user.setName("Google");            user.setDept("Tech");            user.setWebsite("http://www.google.com");            user.setPhone("120");            mapper.insertUser(user);            session.commit();        }        catch (Exception e)        {            e.printStackTrace();        }    }        public static void deleteUser()    {        try        {            SqlSession session = sqlSessionFactory.openSession();            UserMapper mapper = session.getMapper(UserMapper.class);            printUsers(mapper.getUserList());            mapper.deleteUser(2);            session.commit();            printUsers(mapper.getUserList());        }catch (Exception e)        {            e.printStackTrace();        }    }        public static void updateUser()    {        try        {            SqlSession session = sqlSessionFactory.openSession();            UserMapper mapper = session.getMapper(UserMapper.class);            printUsers(mapper.getUserList());            User user = mapper.getUserByID(1);            user.setName("New name");            mapper.updateUser(user);            session.commit();            printUsers(mapper.getUserList());        }catch (Exception e)        {            e.printStackTrace();        }    }        public static void getUserList() {        try {            SqlSession session = sqlSessionFactory.openSession();            UserMapper mapper = session.getMapper(UserMapper.class);            printUsers(mapper.getUserList());        } catch (Exception e) {            e.printStackTrace();        }    }        private static void printUsers(final List
users) { for (User user : users) { System.out.println(user.getId() + user.getName() + user.getDept() + user.getWebsite()); } } }

配置文件中parameterType和resultType的说明:parameterType不填接口正常,resultType得填

insert into user(name, dept, website,phone) values(#{name}, #{dept}, #{website}, #{phone})
update user set name = #{name}, dept = #{dept}, website = #{website}, phone = #{phone} where id = #{id}
delete from user where id = #{id}

【多表查询】

association单个collection多个
association
1273068-20180720174951892-1255564283.png
Configure.xml添加mapper

Post.xml

Post.java

public class Post{    private int postid;    private int userid;    private String title;    private String content;    private Date created;    private User user;        public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    public int getPostid() {        return postid;    }    public void setPostid(int postid) {        this.postid = postid;    }    public int getUserid() {        return userid;    }    public void setUserid(int userid) {        this.userid = userid;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getContent() {        return content;    }    public void setContent(String content) {        this.content = content;    }    public Date getCreated() {        return created;    }    public void setCreated(Date created) {        this.created = created;    }   }

PostMapper.java

public interface PostMapper {    public Post getPostByID(int id);}

Test.java

public static void main(String[] args) {        SqlSession session = sqlSessionFactory.openSession();        PostMapper mapper = session.getMapper(PostMapper.class);        Post post = mapper.getPostByID(1);        System.out.println(post.getUser().getName());    }

collection

User.xml

Test.java

public static void main(String[] args) {        SqlSession session = sqlSessionFactory.openSession();        UserMapper mapper = session.getMapper(UserMapper.class);        User user = mapper.getUserByID(1);        System.out.println(user.getPosts().get(0).getTitle());    }

1273068-20180723092645925-1482086731.png

转载于:https://www.cnblogs.com/likailun/p/9330483.html

你可能感兴趣的文章
C#多线程之二:ManualResetEvent和AutoResetEvent
查看>>
忽略UserInterfaceState.xcuserstate
查看>>
ReactNative--Flexbox布局
查看>>
java实现读取文件大全
查看>>
[Cordova] 无法显示Alert视窗
查看>>
借助过度区选择阈值
查看>>
评论列表显示及排序,个人中心显示
查看>>
JavaWeb学习笔记总结 目录篇
查看>>
C#根据html生成PDF
查看>>
Neutron SDN 手动实现手册
查看>>
linux下core文件调试方法
查看>>
20个创意404错误页面设计的启示
查看>>
基础训练 芯片测试
查看>>
如何用命令将本地项目上传到git
查看>>
JavaScript 实现鼠标拖动元素
查看>>
js 模糊查询 (360接口)
查看>>
python+rabbitMQ实现生产者和消费者模式
查看>>
“模态”对话框和“后退”按钮
查看>>
关于javascript实现的网站页面侧边悬浮框"抖动"问题
查看>>
linux_命令格式和命令提示符
查看>>