首页 > IDEA构建一个mybatis项目

IDEA构建一个mybatis项目

目录结构如下:

 

在pom.xml中配置需要的jar包

  org.mybatismybatis3.3.0mysqlmysql-connector-java5.1.29junitjunit4.11testlog4jlog4j1.2.17org.slf4jslf4j-api1.7.12org.slf4jslf4j-log4j121.7.12


接下来新建config.properties配置文件将JDBC连接所需参数配置进去

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=123456

建一个model,Person.java

public class Person {private int id;private String userName ;private int age ;private String mobilePhone ;public  Person(){}public Person(int id,String userName, int age, String mobilePhone) {this.id = id;this.userName = userName;this.age = age;this.mobilePhone = mobilePhone;}public String getUserName() {return userName;}public int getId() {return id;}public void setId(int id) {this.id = id;}public void setUserName(String userName) {this.userName = userName;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getMobilePhone() {return mobilePhone;}public void setMobilePhone(String mobilePhone) {this.mobilePhone = mobilePhone;}@Overridepublic String toString() {return "Person{" +"userName='" + userName + ''' +", age=" + age +", mobilePhone='" + mobilePhone + ''' +'}';}
}




 

配置mybatis-config.xml






配置日志打印log4j.properties

log4j.rootLogger=debug, stdout, Rlog4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p - %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=firestorm.loglog4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%nlog4j.logger.com.codefutures=DEBUG


 

配置mapper包下的Person.xml





INSERT INTO PERSON(ID,USERNAME,AGE,MOBILEPHONE)VALUES (#{id},#{userName},#{age},#{mobilePhone})UPDATE PERSON SET USERNAME=#{userName},AGE=#{age},MOBILEPHONE=#{mobilePhone} WHERE ID=#{id}


写一个工具类来获取SqlSessionFactory和SqlSession

public class MybatisUtil {private final  static SqlSessionFactory sqlSessionFactory;static {String resource="mybatis-config.xml";Reader reader =null;try {reader = Resources.getResourceAsReader(resource);} catch (IOException e) {e.printStackTrace();}sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);}/*** 获取SqlSessionFactory* @return SqlSessionFactory*/public static SqlSessionFactory getSqlSessionFactory(){return sqlSessionFactory;}/*** 获取SqlSession* @return SqlSession*/public static SqlSession getSqlSession(){return sqlSessionFactory.openSession();}/*** 关闭SqlSession*/public  static void closeSession(SqlSession sqlSession){if (sqlSession!=null)sqlSession.close();}}


最后测试

public class UserTest {SqlSession sqlSession ;@Testpublic void insertPerson(){sqlSession = MybatisUtil.getSqlSession();int id = 10000;String userName = "test";int age = 18;String mobilePhone = "18000000000";Person person = new Person();person.setId(id);person.setAge(age);person.setUserName(userName);person.setMobilePhone(mobilePhone);try{sqlSession.insert("insertPerson",person);sqlSession.commit();}catch (Exception e){e.printStackTrace();}finally {MybatisUtil.closeSession(sqlSession);}}@Testpublic void queryById(){sqlSession = MybatisUtil.getSqlSession();int id = 1;try{Person person = sqlSession.selectOne("queryById",id);sqlSession.commit();System.out.println(person.getUserName());}catch (Exception e){e.printStackTrace();}finally {MybatisUtil.closeSession(sqlSession);}}
}

最后测试,成功插入到数据库中

 

转载于:https://www.cnblogs.com/guodao/p/9702449.html

更多相关:

  •     先吐为敬!   最近心血来潮研究nodejs如何完成微信支付功能,结果网上一搜索,一大堆“代码拷贝党”、“留一手”、“缺斤少两”、“不说人话”、“自己都没跑通还出来发blog”、“各种缺少依赖包”、“各种注释都没有”、“自己都不知道在写什么”的程序大神纷纷为了增加自己博客一个帖子的名额而发布了各种千奇百�...

  • 阅读ceph源码过程中需要明确当前操作是由哪个线程发出,此时需要根据线程id来确认线程名称 C++获取线程id是通过系统调用来直接获取 函数描述 头文件: 函数名称:syscall(SYS_gettid) 该函数直接返回了一个pid_t int类型的数字,即为当前线程id 此外函数pthread_s...

  • 面试题 分库分表之后,id 主键如何处理? 面试官心理分析 其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个全局唯一的 id 来支持。所以这都是你实际生产环境中必须考虑的问题。 面试题剖析 基于数据库的实现方案 数据库自增 id 这个就是说你的...

  • ORM操作    单表、一对多表操作 1 from django.db import models 2 3 4 class UserGroup(models.Model): 5 title = models.CharField(max_length=32) 6 7 8 class UserInfo(m...

  • 建立如下表: 建表语句: class表创建语句 create table class(cid int not null auto_increment primary key, caption varchar(32) not null)engine=innodb default charset=utf8;student表创建语句 c...

  • 在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的配置文件,那么在.net core中该如何读取json文件呢?1、在Startup类中读取json配置文件1、使用Confi...

  •   1 public class FrameSubject extends JFrame {   2    3   …………..   4    5   //因为无法使用多重继承,这儿就只能使用对象组合的方式来引入一个   6    7   //java.util.Observerable对象了。   8    9   DateSub...

  • 本案例主要说明如何使用NSwag 工具使用桌面工具快速生成c# 客户端代码、快速的访问Web Api。 NSwagStudio 下载地址 比较强大、可以生成TypeScript、WebApi Controller、CSharp Client  1、运行WebApi项目  URL http://yourserver/swagger 然后...

  •   在绑定完Action的所有参数后,WebAPI并不会马上执行该方法,而要对参数进行验证,以保证输入的合法性.   ModelState 在ApiController中一个ModelState属性用来获取参数验证结果.   public abstract class ApiController : IHttpController,...

  • 1# 引用  C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.dll C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.Presentation.dll 2# 引用命名空间, using Aveva.Applicati...

  • 环境:Cmake3.10+OpenCV2.4.13.5+CUDA9.2 Problem CMake Warning at cmake/OpenCVPackaging.cmake:23 (message):CPACK_PACKAGE_VERSION does not match version provided by version...

  • 文章目录Step 1:glibc-2.17 被libc.so.6库依赖,升级glibc库Step2:升级编译器-->4.8.2可以正常编译glibc2.17Step3:修改ELF,降低ceph-mon依赖的库函数版本解决ceph-mon调用高版本libc库(修改动态库链接表ELF) Step 1:glibc-2.17 被lib...

  • Qt程序版本号使用 在pro文件中添加(版本号可以3段或者4段) VERSION=1.0.1.2DEFINES += APP_VERSION=\"$${VERSION}\" 实际代码中使用 QString version = APP_VERSION;qInfo()<<"版本信息:"<< version;...

  • 一:概述SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛。 Spring作为一个轻量级的框架,有很多的拓展功能,最主要的我们一般项目使用的就是IOC和AOP。SpringMVC是Spring实现的一个Web层,相当于Struts的框架,但是比Struts更加灵活和强大!Mybatis是 一个持久层...

  • AppDomain.CurrentDomain.ApplicationIdentity.CodeBase   获取作为URL的部署清单的位置 Eg:发布前地址为E:PROJECTWORKLandaV8inDebugxxxxx.xbap(xxxxx.xbap为部署站点下的文件),部署后获取的地址为http://192.168...