MyBatis基于Maven的入门

主要内容如下: 

  1. myBatis在maven中的配置  
  2. myBatis在工程中的config配置文件
  3. myBatis为Bean和表的映射文件
  4. myBatis基本的使用 
  • myBatis在maven中的配置,在pom.xml中增加内容

         1. 增加依赖 , mybatis的,还有mysql的驱动的,servlet的, 以及junit的

1 <dependency> <!-- mybatis的依赖 --> 2 <groupId>org.mybatis</groupId> 3 <artifactId>mybatis</artifactId> 4 <version>3.2.8</version> 5 </dependency> 6 7 <dependency> <!-- mysql的驱动的依赖 --> 8 <groupId>mysql</groupId> 9 <artifactId>mysql-connector-java</artifactId> 10 <version>5.1.6</version> 11 </dependency> 12 13 <dependency> 14 <groupId>javax.servlet</groupId> 15 <artifactId>javax.servlet-api</artifactId> 16 <version>3.0.1</version> 17 <scope>provided</scope> <!-- 只在编译时和测试时运行的依赖 --> 18 </dependency> 19 20 <dependency> 21 <groupId>junit</groupId> 22 <artifactId>junit</artifactId> 23 <version>3.8.1</version> 24 <scope>test</scope> 25 </dependency>

            2.增加插件

1 <plugin> 2 <groupId>org.mybatis.generator</groupId> 3 <artifactId>mybatis-generator-maven-plugin</artifactId> 4 <version>1.3.2</version> 5 <configuration> 6 <verbose>true</verbose> 7 <overwrite>true</overwrite> 8 </configuration> 9 </plugin>
  • myBatis在工程中的config配置文件,在java代码的根目录下创建mybatis-config.xml

         1. jdbc需要的配置文件:

1username=wxn 2password=wxn123 3url=jdbc:mysql://localhost:3306/simple_shop 4driver=com.mysql.jdbc.Driver

         2. mybatis-config.xml的内容则如下:

1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 5 <!-- 1. 配置数据库的配置 --> 6<configuration> 7 <properties resource="jdbc.properties" /> 8 <typeAliases> <!-- 这一条配置必须在properties和settings配置之后 --> 9 <!--为bean的映射文件中的入参出参指定别名,则入参可以不用输入类的全名称了 --> 10 <typeAlias type="cn.feezu.wxn.domain.User" alias="User"/> 11 </typeAliases> 12 <environments default="development"> <!-- 环境可以配置多个,以便不同需要时可以任意切换 --> 13 <environment id="development"> 14 <!-- 事务管理 --> 15 <transactionManager type="JDBC"></transactionManager> 16 <dataSource type="POOLED"> 17 <property name="driver" value="${driver}"/> 18 <property name="url" value="${url}"/> 19 <property name="username" value="${username}"/> 20 <property name="password" value="${password}"/> 21 </dataSource> 22 </environment> 23 </environments> 24 <mappers> <!-- 指定映射文件的路径位置 --> 25 <mapper resource="cn/feezu/wxn/domain/User.xml"/> 26 </mappers> 27</configuration>
  •  myBatis为Bean和表的映射文件

        1.假设已经创建了一个javabean 为User

1package cn.feezu.wxn.domain; 2 3import java.util.List; 4 5public class User { 6 private int id; 7 private String username; 8 private String password; 9 private String nickname; 10 private int type; 11 12 //不做一这一方的映射 13 private List<Address> addresses; 14 15 //setter 和 getter .......... 16}

     2.而且已经存在一个数据库simple_shop, 以及表s_user,如下是sql语句

1drop database if exists simple_shop; 2create database simple_shop; 3grant all on simple_shop.* to 'wxn'@'localhost'; 4## 密码是wxn123 5use simple_shop; 6 7create table s_user( 8 id int(11) primary key auto_increment, 9 username varchar(100), 10 password varchar(100), 11 nickname varchar(100), 12 type int(5) 13); 14 15create table s_address( 16 id int(11) primary key auto_increment, 17 name varchar(255), 18 phone varchar(100), 19 postcode varchar(100), 20 reciver varchar(100), 21 user_id int(11), 22 constraint foreign key (user_id) references s_user(id) 23);

     3. 在User.java的同目录中创建一个User.xml作为配置的映射文件

1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE mapper 3 PUBLIC "-//mybatis.org/DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 6<mapper namespace="cn.feezu.wxn.domain.User"> <!-- 这里指定namespace名同javabean --> 7<!--<mapper namespace="cn.feezu.wxn.mapper.UserMapper"> --><!-- 使用Mapper接口 --> 8 <!-- 这里的入参为User,使用的是config文件中指定的别名 --> 9 <insert id="add" parameterType="User"> 10 insert into s_user(username, 11 password, nickname, type) 12 value(#{username}, #{password}, #{nickname}, 13 #{type}); 14 </insert> 15 16 <update id="update" parameterType="User"> 17 update s_user set 18 password=#{password}, nickname=#{nickname}, 19 username=#{username}, 20 type=#{type} 21 </update> 22 23 <delete id="delete" parameterType="Integer"> 24 delete from s_user where 25 id=#{id}; 26 </delete> 27 <!-- 这里的出参为User,使用的是config文件中指定的别名 --> 28 <select id="select" parameterType="int" resultType="User"> 29 select * from 30 s_user where id=#{id}; 31 </select> 32</mapper>
  • myBatis基本的使用

        1. MyBatis使用SqlSession来控制事务,而SqlSession需要使用工厂模式创建,而SqlSession工厂的创建需要mybatis的配置文件作为资源来构建,抽取这个过程,得到一个MyBatisUtils的工具类.

1package cn.feezu.wxn.utils; 2 3import java.io.InputStream; 4import org.apache.ibatis.io.Resources; 5import org.apache.ibatis.session.SqlSession; 6import org.apache.ibatis.session.SqlSessionFactory; 7import org.apache.ibatis.session.SqlSessionFactoryBuilder; 8 9public class MyBatisUtil { 10 private static SqlSessionFactory factory; 11 static{ 12 try { 13 InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml"); 14 factory = new SqlSessionFactoryBuilder().build(resourceAsStream); 15 } catch (Exception e) { 16 e.printStackTrace(); 17 } 18 } 19 20 public static SqlSession openSession(){ 21 return factory.openSession(); 22 } 23 24 public static void closeSession(SqlSession session){ 25 if (session != null) { 26 session.close(); 27 } 28 } 29}

    2. 那么创建测试方法来检验mybatis的配置是否生效

1 @Test 2 public void testUserAdd() { 3 SqlSession session = null; 4 try { 5 session = MyBatisUtil.openSession(); 6 // 调用mapper文件插入数据,调用之前需要将mapper文件配置到mybatis-config.xml文件中 7 User user = new User(); 8 user.setNickname("大刀王五"); 9 user.setPassword("123123"); 10 user.setUsername("wangwu"); 11 user.setType(1); 12 //注意insert方法第一个参数 13 //session.insert("cn.feezu.wxn.domain.User.add", user); 14 session.insert(User.class.getName() + ".add", user); 15 session.commit(); //提交事务 16 } catch (Exception e) { 17 e.printStackTrace(); 18 session.rollback(); // 事务提交失败,回滚 19 } finally { 20 MyBatisUtil.closeSession(session); //关闭session 21 } 22 }

     3. 使用Mapper接口

        1.对应User.xml中的增删改查,可以创建对应的Mapper接口,UserMapper.java,而不需要实现

1package cn.feezu.wxn.mapper; 2 3import cn.feezu.wxn.domain.User; 4 5/** 6 * 为User.xml增加接口方法 7 * @author wangxn 8 * 9 */ 10public interface UserMapper { 11 12 public void add(User user); 13 14 public void update(User user); 15 16 public void delete(Integer id); 17 18 public User select(int id); 19}

      2. 创建了接口之后, 那么在javabean的映射文件中就可以替换mapper标签为中的namespace为Mapper接口了,其他配置不变

<mapper namespace="cn.feezu.wxn.mapper.UserMapper">

     3. 在代码中使用时,就可以不直接使用session了,而是用Mapper来处理,好处是不用使用字符串传参防止出错了

1 @Test 2 public void testUserAdd(){ 3 SqlSession session = null; 4 try { 5 session = MyBatisUtil.openSession(); 6 7 User user = new User(); 8 user.setUsername("zhangfei"); 9 user.setNickname("zhangyide"); 10 user.setPassword("123123"); 11 user.setType(2); 12 13 session.getMapper(UserMapper.class).add(user); 14 15 session.commit(); 16 } catch (Exception e) { 17 e.printStackTrace(); 18 session.rollback(); 19 } finally { 20 MyBatisUtil.closeSession(session); 21 } 22 }
点赞
收藏

评论区

加载中...

相关推荐

基于Maven工程下的MyBatis基本使用之SQL传单/多参、多表关联查询

MyBatis基本使用声明:基于《基于Maven工程下的MyBatis框架MySQL连接池的数据查询操作》进一步拓展,相关配置文件、数据文件可阅上篇。SQL传单/多参在goods.xml新增两个<select:<!单参数传参,使用paramterType指定的数据类型即可,SQL中value提取参数<selectid"sel

springcloud+jps+mybatis多数据库配置

1.多数据库配置配置我们目录结构设置:config datasource\jpa\mybatis\redis Datasource中是数据的相关配置Jap中是springDatajpa的相关配置Mybatis中是mybatis的相关配置Redis中是redis的相关配置如果还有其他

基于Maven工程下的MyBatis基本使用之数据插入【回填】、修改与删除

MyBatis基本使用声明:基于《基于Maven工程下的MyBatis框架MySQL连接池的数据查询操作》与《基于Maven工程下的MyBatis基本使用之SQL传单/多参、多表关联查询》进一步拓展,相关配置文件、数据文件可阅以上两篇。数据插入<insert,使用<selectKey进行回填自动生成主键值<!需要明确编写获取最新主键的SQL语句<in

Intellij IDEA中使用MyBatis

1、IDEA创建maven工程(略)2、在maven项目的pom.xml添加mybatisgeneratormavenplugin插件和MySQL数据库驱动依赖<build <plugins  <plugin   <groupIdorg.mybatis.generato

SSM_基于传统web项目

1.这是一个单模块的项目!有四个配置文件,mybaits,spring。springmvc,web.xml!2.web.xml配置文件,导入spring和springmvc的配置文件,spring配置文件中,获取sqlsession,以及关联mybatis的mpper(增删改查)文件3.mybatis的配置文件则可以不用写

MybatisPlus知识详解以及用十数个例子完成MybatisPlus的入门到进阶

1\.MybatisPlus1.1业务需求Mybatis缺点:1.Mybatis操作数据库的过程中,需要编辑大量的sql语句.无论该sql是否复杂或者简单.2.Mybatis操作时在xml配置文件中需要额外记忆单独的标签.需求:能否实现单表操作的CRUD的全自动的实现.能否实现

MyBatis基于Maven的入门 - HelloWorld