我是靠谱客的博主 直率手套,这篇文章主要介绍MyBatis如何连接数据库    -------mybatis连接数据库进行操作数据-------一、导入jar包二、对应数据表创建一个pojo实体对象三、创建mybatis的配置文件mybatis-config.xml四、创建上面的TuserMapper.xml(Sql映射wenj)        测试类,现在分享给大家,希望可以做个参考。

在学习Mybatis时我们应该先知道为什么要学习mybatis,mybatis有什么,mybatis能做什么?

        MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。

 在此可以引出一个问题什么是半自动化的ORM呢?

  • ORM(对象关系映射):利用对象和数据库之间映射的数据,把Java程序中的对象持久化到数据库中的表内。
  •  
  • 这里的“半自动化”,是相对 Hibernate 等提供了全面的数据库封装机制的“全自动化”ORM 实现而言,“全自动”ORM 实现了 POJO 和数据库表之间的映射,以及 SQL 的自动生成和执行。而 MyBatis 的着力点,则在于 POJO 与 SQL 之间的映射关系。也就是说,MyBatis 并不会为程序员在运行期自动生成 SQL 执行。具体的 SQL 需要程序员编写,然后通过映射配置文件,将 SQL 所需的参数,以及返回的结果字段映射到指定 POJO。使用 ibatis 提供的 ORM 机制,对业务逻辑实现人员而言,面对的是纯粹的 Java 对象,这一层与通过 Hibernate 实现 ORM 而言基本一致,而对于具体的数据操作,Hibernate会自动生成 SQL 语句,而 MyBatis 则要求开发者编写具体的 SQL 语句。相对 Hibernate 等“全自动”ORM 机制而言,ibatis 以 SQL 开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,MyBatis 的出现显得别具意义。

  • ------------------------以上文字部分来自其他路径 https://www.w3cschool.cn/mybatis 有需要可自行查询--------------------------------
  • 我们可以再说一下mybatis的优缺点:
  •  优点:1.简单易学
  •             2.消除了大量的JDBC过多的代码
  •             3.良好的性能
  •             3.友好的Spring集成支持
  •             4.友好的第三方缓存类库集成支持
  • 缺点:1、编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。
  •             2、SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。
  •             3、缓存机制不佳

    -------mybatis连接数据库进行操作数据-------

        mybatis的核心概念中含有:核心对象、核心配置文件、sql映射文件。

一、导入jar包



以下是项目的结构

如果使用myeclipse等工具注意jar包放在lib文件里

要下载的jar包(官方):

mysql驱动 jar包:https://dev.mysql.com/downloads/connector/j/


junit测试 jar包:https://junit.org/junit4/


mybatis jar包:https://github.com/mybatis


log4j日志文件 jar包:http://logging.apache.org/log4j/2.x/download.html


复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<dependencies> <dependency> <!--日志文件所用的jar包--> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> <dependency> <!--mysql驱动包--> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.28</version> </dependency> <dependency> <!--mybatisjar包--> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <dependency> <!--测试所用的jar包--> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies>

复制代码
1
log4j所用代码可以从官网找到
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
log4j.rootLogger=DEBUG,CONSOLE,file log4j.logger.cn.smbms.dao=debug log4j.logger.com.ibatis=debug log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug log4j.logger.java.sql.Connection=debug log4j.logger.java.sql.Statement=debug log4j.logger.java.sql.PreparedStatement=debug log4j.logger.java.sql.ResultSet=debug log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.Threshold=error log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.DatePattern=yyyy-MM-dd log4j.appender.file.File=log.log log4j.appender.file.Append=true log4j.appender.file.Threshold=error log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n log4j.logger.com.opensymphony.xwork2=error

创建database.properties文件



二、

以下是我项目的结构

如果使用myeclipse等工具注意jar包放在lib文件里



对应数据表创建一个pojo实体对象

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class Tuser { private Integer id; private String userName,password,nickName; @Override public String toString() { return "Tuser{" + "id=" + id + ", userName='" + userName + ''' + ", password='" + password + ''' + ", nickName='" + nickName + ''' + '}'; } 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 String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName; } }

三、创建mybatis的配置文件mybatis-config.xml

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<configuration> <!--调用database.properties文件--> <properties resource="database.properties"></properties> <!--选择log4j日志存储文件--> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <!--类型别名--> <typeAliases> <typeAlias alias="Tuser" type="cn.jdbc.entity.Tuser"></typeAlias> </typeAliases> <environments default="dvr"> <environment id="dvr"> <!--事务管理器 选择jdbc获取事务--> <transactionManager type="JDBC"></transactionManager> <!--数据源有POOLED 和UNPOLED可选择是否使用数据源--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </dataSource> </environment> </environments> <mappers> <!--mappers是映射器,把mapper文件加入到配置文件中--> <mapper resource="cn/jdbc/dao/TuserMapper.xml"></mapper> </mappers> </configuration>

四、创建上面的TuserMapper.xml(Sql映射wenj)

复制代码
1
2
3
4
5
6
7
8
<mapper namespace="cn.jdbc.dao.TuserMapper"> <!--避免因为数据库与程序中变量出现不同名,会出现差误。所以使用resultMap--> <resultMap id="userMap" type="Tuser"> <id property="id" column="id"></id> <result property="userName" column="user_name"></result> <result property="password" column="password"></result> <result property="nickName" column="nick_name"></result> </resultMap>

        测试类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Test public void QueryCount() { String source="mybatis-config.xml"; int count=0; SqlSession sqlSession=null; try { //1 获取mybatis-config.xml的输入流 InputStream is = Resources.getResourceAsStream(source); //2 创建一个工厂,完成对配置文件的读取 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is); //3 创建sqlSession,开启工厂 sqlSession=sqlSessionFactory.openSession(); //4 根据放入工厂的sql语句执行不同的方法 count=sqlSession.selectOne("com.bdqn.dao.TUserMapper.queryCount");
复制代码
1
        System.out.println(count);
} catch (IOException e) { e.printStackTrace(); }finally { sqlSession.close(); } }}
复制代码
1
2
3
4
5
6
@Test public void queryALLTest(){ SqlSession sqlSession=null; try {
复制代码
1
2
3
4
5
6
7
             //1 获取mybatis-config.xml的输入流 InputStream is = Resources.getResourceAsStream(source); //2 创建一个工厂,完成对配置文件的读取 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is); //3 创建sqlSession,开启工厂 sqlSession=sqlSessionFactory.openSession(); //4 根据放入工厂的sql语句执行不同的方法

以上测试类的方法有很多的冗余代码,我们可以抽取冗余的代码建一个工具类:

          注意: 导的包要注意
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package cn.jdbc.util; 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 MybatisUtil { private static SqlSessionFactory sqlSessionFactory; static { try { InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml"); sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession createSqlSession(){ return sqlSessionFactory.openSession(); } public static void closeSqlSession(SqlSession sqlSession){ if(sqlSession!=null){ sqlSession.close(); } } }

首先创建一个TuserMapper接口,注意要和TuserMapper.xml同名

复制代码
1
2
3
4
5
6
public interface TuserMapper { //查询全部用户信息 List<Name> queryAll(); //模糊查询,查询通过用户名查询用户信息 List<Name> getUserListByUserName(String name);
复制代码
1
2
//修改数据 public Integer updateTuser(Name name);
复制代码
1
2
3
4
5
6
//删除用户数据 Integer deleteTuserByid(Integer id); //插入数据 Integer addTuser(Name name); }

        测试类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//获取全部用户信息 public void queryAll(){     SqlSession sqlSession=null; sqlSession=MybatisUtil.createSqlSession(); //第一种方法 通过全限定名获取信息 // List<Tuser> n=sqlSession.selectList("cn.jdbc.dao.TuserTest.queryAll"); //第二种方法 通过接口返回信息引入映射文件中 List<Name> n=sqlSession.getMapper(TuserMapper.class).queryAll(); if(n!=null){ for (Name tuser : n) { System.out.println(tuser); } } }
复制代码
1
2
3
4
5
//添加 public void addTuser(){ SqlSession sqlSession=null; Tuser user=new Tuser();      user.setUserName("admin");
复制代码
1
       user.setPassword("121212");
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
       user.setNickName("mingming"); int rows=0; sqlSession = MybatisUtil.createSqlSession(); rows=sqlSession.getMapper(TuserMapper.class).addTuser(name); sqlSession.commit(); if(rows>0){ System.out.println("添加成功"); }else{ System.out.println("添加失败"); } MybatisUtil.closeSqlSession(sqlSession); }
复制代码
1
2
3
4
5
//修改 public void testUpdateTuser(){ SqlSession sqlSession=null;
复制代码
1
2
       Tuser user=new Tuser();      user.setUserName("admin33");
复制代码
1
       user.setPassword("00000");
复制代码
1
       user.setId(002);  
复制代码
1
     user.setNickName("ming");
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//删除 public void testDeletTuserByid(){ SqlSession sqlSession=null; int delete=0; sqlSession = MybatisUtil.createSqlSession(); delete=sqlSession.getMapper(TuserMapper.class).deleteTuserByid(1); sqlSession.commit(); if(delete>0){ System.out.println("删除成功"); }else{ System.out.println("删除失败"); } MybatisUtil.closeSqlSession(sqlSession); }

    此文是笔者初学乍练,准备不足之作,如有错误,欢迎向笔者提出,以避免笔者误导其他读者。



最后

以上就是直率手套最近收集整理的关于MyBatis如何连接数据库    -------mybatis连接数据库进行操作数据-------一、导入jar包二、对应数据表创建一个pojo实体对象三、创建mybatis的配置文件mybatis-config.xml四、创建上面的TuserMapper.xml(Sql映射wenj)        测试类的全部内容,更多相关MyBatis如何连接数据库 内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(101)

评论列表共有 0 条评论

立即
投稿
返回
顶部