场景

Eclipse+Mybatis3.4+log4j1.2+mysql5.7

使用新手入门学习Mybatis时实例模板。

实现

Eclipse中新建项目

1.打开EClipse,File--new--java Project,名字叫做MybatisTemplate,点击Finish。

2.然后右击项目--Build Path--Config Build Path

3.选择Libraries下的Add External JARs

4.选择mybatis的jar包、log4j的jar包、连接mysql所需要的jar包

jar包下载:https://github.com/badaoliumang/jarPackageCollection

5.然后点击Apply--Apply and Close

6.新建包,目录如下

7.新建配置文件log4j.properties(log4j日志配置文件)、mybatis-config.xml(mybatis配置文件),目录如下

创建数据库

1.新建数据库ssmTemplate

2.新建表User,字段如下,注意id是自增主键。

代码实现

1.pojo包下新建User.java

package com.badao.ssm.ssmTemplate.pojo;public class User {private int id;private String userName;private String remark;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}}

2.mapper包新建UserMapper.java接口

package com.badao.ssm.ssmTemplate.mapper;import java.util.List;import com.badao.ssm.ssmTemplate.pojo.User;public interface UserMapper {public int insertUser(User user);public int deleteUser(int id);public int updateUser(User user);public User getUser(int id);public List<User> findUsers(String userName);
}

3.mapper包下新建UserMapper.xml映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.badao.ssm.ssmTemplate.mapper.UserMapper"><insert id="insertUser" parameterType="user" useGeneratedKeys="true" keyProperty="id">insert into User(userName, remark) values(#{userName}, #{remark})</insert><delete id="deleteUser" parameterType="int">delete from User where id= #{id}</delete><update id="updateUser" parameterType="user">update User set userName = #{userName}, remark = #{remark} where id= #{id}</update><select id="getUser" parameterType="int" resultType="user">select id,userName as userName, remark from User where id = #{id}</select><select id="findUsers" parameterType="string" resultType="user">select id, userName as userName, remark from Userwhere userName like concat('%', #{userName}, '%')</select>
</mapper>

其中namespace属性要与接口的全路径一样,即包名加接口名。

注意id为自增主键,所以针对于mybatis要配置:

seGeneratedKeys="true" keyProperty="id"

4.配置mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration   PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><typeAliases><!-- 别名 --><typeAlias alias="user" type="com.badao.ssm.ssmTemplate.pojo.User"/></typeAliases><!-- 数据库环境 --><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/ssmTemplate"/><property name="username" value="root"/><property name="password" value=""/></dataSource></environment></environments><!-- 映射文件 --><mappers><mapper resource="com/badao/ssm/ssmTemplate/mapper/UserMapper.xml"/></mappers>
</configuration>

注:

别名配置是为了以后在别的地方用的时候不用写太长的别名。

映射文件要与上面的mapper文件所在的位置相对应。

5.配置log4j.properties

log4j.rootLogger=DEBUG , stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n

6.配置SqlSessionFactoryUtils类

package com.badao.ssm.ssmTemplate.utils;import java.io.IOException;import java.io.InputStream;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 SqlSessionFactoryUtils {private final static Class<SqlSessionFactoryUtils> LOCK = SqlSessionFactoryUtils.class;private static SqlSessionFactory sqlSessionFactory = null;private SqlSessionFactoryUtils() {}public static SqlSessionFactory getSqlSessionFactory() {synchronized (LOCK) {if (sqlSessionFactory != null) {return sqlSessionFactory;}String resource = "mybatis-config.xml";InputStream inputStream;try {inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();return null;}return sqlSessionFactory;}}public static SqlSession openSqlSession() {if (sqlSessionFactory == null) {getSqlSessionFactory();}return sqlSessionFactory.openSession(true);}
}

测试CRUD

1.新建MybatisMain.java 用于测试CRUD

package com.badao.ssm.ssmTemplate.main;
import java.util.List;import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;import com.badao.ssm.ssmTemplate.mapper.UserMapper;
import com.badao.ssm.ssmTemplate.pojo.User;
import com.badao.ssm.ssmTemplate.utils.SqlSessionFactoryUtils;
public class MybatisMain {public static void main(String[] args) {testUserMapper();}private static void testUserMapper() {Logger log = Logger.getLogger(MybatisMain.class);SqlSession sqlSession = null;try {sqlSession = SqlSessionFactoryUtils.openSqlSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);//测试查询/*Role role = roleMapper.getRole(1l);log.info(role.getRoleName());*///测试更新/*Role role3 = new Role();role3.setId(1l);role3.setRoleName("YSH");role3.setNote("测试更新");int updateResult = roleMapper.updateRole(role3);*///测试插入/*testInsert();User user =new User();user.setUserName("霸道");user.setRemark("测试");int insertResult = userMapper.insertUser(user);if(insertResult == 0) {System.out.println("插入失败");log.info("插入失败");}else {System.out.println("插入成功");log.info("插入成功");}*///测试查询/*User user2 = userMapper.getUser(1);log.info("查询到的用户名为:"+user2.getUserName());*///测试更新/*User user3 = new User();user3.setId(1);user3.setUserName("霸道------");user3.setRemark("更新成功了");int updateResult = userMapper.updateUser(user3);if(updateResult == 0) {System.out.println("更新失败");log.info("更新失败");}else {System.out.println("更新成功");log.info("更新成功");}*///测试删除/*int deleteResule = userMapper.deleteUser(1);if(deleteResule == 0) {System.out.println("删除失败");log.info("删除失败");}else {System.out.println("删除成功");log.info("删除成功");}*///测试模糊查询/*List<User> userList = userMapper.findUsers("霸");for (User user : userList) {System.out.println(user.getUserName());}*/} finally {if (sqlSession != null) {sqlSession.close();}}}private static void testInsert() {// TODO Auto-generated method stub}}

2.测试插入

2.测试查询

3.测试更新

4.测试删除

5.测试模糊查询

项目下载

github:

https://github.com/badaoliumang/SSMCodeCollection/tree/master/MybatisTemplate

项目总目录

mybatis中使用XML配置文件方式实现CRUD模板流程相关推荐

  1. Mybatis中SqlMapConfig.xml配置文件的使用

    文章目录 SqlMapConfig.xml中配置的内容和顺序如下 properties(属性) SqlMapConfig.xml引用如下 typeAliases(类型别名) mybatis支持别名: ...

  2. mybatis中的xml配置文件中sql语句里的比较符号需要用特殊标签包裹有比较大于和小于条件

    因xml文件中的比较符合与标签符合一样,系统为区分比较符合就需要特殊标签包裹下: <select id="queryRefundTimeBorrowerInfo"result ...

  3. spring xml配置文件方式和注解方式的优缺点

    xml配置文件方式优点: 1.降低耦合,使容易扩展. 2.对象之间的关系一目了然. 3.xml配置文件比注解功能齐全. xml配置文件方式缺点: 1.配置文件配置工作量相对注解要打. 注解方式优点: ...

  4. Android中Manifest.xml配置文件

    Android中Manifest.xml配置文件里面有很多的属性,下面对部分进行了整理,还没有整理完全. A.基本框架: <?xml version="1.0" encodi ...

  5. MyBatis框架基于XML配置文件开发

    MyBatis框架基于XML配置文件开发 本文内容涉及MyBatis框架开发的传参,多表查询,结果封装: 说明: 当前使用的是mysql数据库, 测试在maven工程下: 数据库表: book表: k ...

  6. Winform中自定义xml配置文件后对节点进行读取与写入

    场景 Winform中自定义xml配置文件,并配置获取文件路径: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100522648 ...

  7. mybatis加载xml配置文件

    <build><finalName>bizcloud-tcb2b</finalName><!-- mybatis加载xml配置文件的配置 -->< ...

  8. IDEA中pom.xml配置文件依赖文件版本号报红的最有效解决办法

    关于IDEA中pom.xml配置文件依赖文件版本号报红的最有效解决办法,简单粗暴直接! 问题产生及解决过程 产生的报错 解决过程 问题产生及解决过程 产生的报错 最近在研究IDEA的使用以及boots ...

  9. mysql+xml+注释,springboot整合mybatis完整示例, mapper注解方式和xml配置文件方式实现(我们要优雅地编程)...

    一.注解方式 pom org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.0 mysql mysql-connector-java org. ...

最新文章

  1. BlockChain:《Blockchain Gate》听课笔记——区块链的1.0架构 VS 区块链3.0架构+个人理解
  2. Pytorch中DataLoader类
  3. windows 只能同时 启动一个_一个u盘能否刻入win 7、win10等多个系统?该怎么做?...
  4. 精通ASP.NET MVC ——属性路由
  5. 局域网打印机反应慢_为什么你的Excel这么慢,这些原因必须要知道!
  6. 插入排序算法(C实现)
  7. java web空指针,java - Web服务中的Java空指针异常@autowired [重复] - 堆栈内存溢出
  8. win10 Anaconda 安装教程
  9. java删除cookie_JAVAWEB使用保存cookie、删除cookie、获取cookie工具类
  10. mac无法正确打开html,苹果MacBook电脑打不开网页不能访问怎么办
  11. UnityShader[3]屏幕后处理学习笔记
  12. 【IT项目管理】第5章 保障项目进度
  13. POJ 3233 矩阵快速幂
  14. 微信最新版下载 8.0.6
  15. C 龟兔赛跑题目:T分钟后乌龟和兔子谁跑得快?
  16. 吴恩达机器学习python实现8 异常检测及推荐系统
  17. [番外]:带你玩正则1--数据遍地是,看你取不取
  18. spring boot + gateway + nacos 网关统一代理
  19. 结构体初始化为0的技巧!!
  20. 图像处理——中值滤波

热门文章

  1. Java线程中wait、await、sleep、yield、join用法总结
  2. MySQL安装及可能出现的问题
  3. 编程用的记事本软件_数控常用编程软件那么多,你用哪一种?
  4. 银河麒麟svn: E215000: GNOME Keying被锁定,并且我们处于非交互方式
  5. java 数据库提交,java.sql.Statement向数据库提交的语句不可以是SQL语句的()。
  6. java并发实战编程pdf_「原创」Java并发编程系列25 | 交换器Exchanger
  7. php内置函数和扩展,PHP 内置函数strlen 和mbstring扩展函数mb_strlen的区别
  8. python networkx进行最短路径分析_NetworkX vs Scipy所有最短路径算法
  9. spring.profiles.active配置了没生效_一文带你彻底学会 Git Hooks 配置
  10. mysql查找内容某字符串出现的次数_查找MySQL中特定字符串出现的次数?