myBatis学习之路1-基本功能实现
myBatis也是一个持久型框架,相较于hibernate来说,算是轻量级的。
1.配置mybatis环境
相关jar下载地址:mybatis+mysalJAR包
2.新建一个java project工程
2.1配置log4j.properties文件,用于日志输出
log4j.rootCategory=DEBUG, Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] -%m%n log4j.logger.java.sql.ResultSet = INFO log4j.logger.org.apache = INFO log4j.logger.java.sql.Connection = DEBUG log4j.logger.java.sql.Statement = DEBUG log4j.logger.java.sql.PreparedStatement = DEBUG
log4j
2.2配置MybatisConfig.xml,用于配置数据库连接
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mynatis.org//DTD Config 3.0 EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 别名 --> <typeAliases> <typeAlias alias="User" type="com.juin.entity.User" /> <typeAlias alias="Person" type="com.juin.entity.Person" /> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"> </transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis_test"/> <property name="username" value="juin"/> <property name="password" value="123654"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/juin/map/juinUser.xml"/> <mapper resource="com/juin/map/person.xml"/> <mapper class="com.juin.map.IUser"/> </mappers> </configuration>
MyBatisConfig.xml
2.3配置juinUser.xml,前面忘记说了,mybatis实现了代码与数据库连接语句的分离。
<?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="domain.blog.mappers.AuthorMapper"> <select id="findById" parameterType="int" resultType="com.juin.entity.User"> select * from user where id=#{id} </select> <insert id="insertUser" parameterType="User" statementType="PREPARED" keyProperty = "id" useGeneratedKeys = "true"> insert into user (username,psw) values (#{username},#{psw}) </insert> <update id="updateUser" parameterType="User"> UPDATE User SET username=#{username}, psw=#{psw} where id = #{id} </update> <select id="loginSelect" parameterType="hashmap" resultType="User"> select * from user where username = #{username} and psw = #{psw} </select> <select id="loginSelect2" parameterType="User" resultType="User"> select * from user where username = #{username} and psw = #{psw} </select> <select id="selectList" resultType="User"> select * from user </select> <resultMap id="UserMap" type="User"> <id property="id" column="id"/> <result property="username" column="username"/> <result property="psw" column="psw"/> </resultMap> <select id="selectUsers" resultMap="UserMap"> select * from user </select> </mapper>
juinUser.xml
2.4创建User实体类
package com.juin.entity; public class User { private int id; private String username; private String psw; 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 getPsw() { return psw; } public void setPsw(String psw) { this.psw = psw; } }
User.java
2.5创建测试类
package com.juin.test; import java.io.IOException; 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; import com.juin.entity.User; public class test1 { public static void main(String[] args) { String resource = "com/juin/map/MybatisConfig.xml"; Reader reader = null; SqlSession session = null; try { reader = Resources.getResourceAsReader(resource); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader); session = sqlMapper.openSession(); User temp = session.selectOne("findById", 2); System.out.println(temp.getUsername()); session.close(); } }
test
myBatis学习之路1-基本功能实现的更多相关文章
- mybatis学习之路----批量更新数据两种方法效率对比
原文:https://blog.csdn.net/xu1916659422/article/details/77971696/ 上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题. 实现方 ...
- mybatis学习之路
MyBatis 是支持普通SQL查询.存储过程和高级映射的优秀持久层框架. MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装. MyBatis可以使用简单的XML或注解 ...
- MyBatis学习之路之configuration配置
1.首先讲解的是MyBatis核心配置文件configuration.xml的配置 一个完整的configuration.xml配置顺序如下: properties,settings,typeAlia ...
- mybatis学习之路----mysql批量新增数据
原文:https://blog.csdn.net/xu1916659422/article/details/77971867 接下来两节要探讨的是批量插入和批量更新,因为这两种操作在企业中也经常用到. ...
- springboot 学习之路 3( 集成mybatis )
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...
- 新篇章之我的java学习之路下
昨天写下了人生的第一篇博客,今天接着写我的java学习之路有关开发及框架的学习过程. 想要学好java语言,只学习一些java的基本语法对实际开发中的用处还是不大的,所以我们还要掌握一些有关javaW ...
- springboot 学习之路 1(简单入门)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- springboot 学习之路 4(日志输出)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
随机推荐
- 同时执行多个$.getJSON() 数据混乱的问题的解决
在执行之前加$.ajaxSettings.async = false; (同步执行)执行你的代码之后及时恢复为$.ajaxSettings.async = true: (异步执行)不然影响别的地方的需 ...
- 一个简易的netty udp服务端
netty号称java高性能网络库,为人帮忙中,研究了下,写了一个demo.反复调试,更改,局域网两个客户端同时for循环发10000个20字节的数据包,入库mysql,居然没丢. 思路,netty的 ...
- 基于EBNF语法的描述
基于JavaCC的语法描述 使用JavaCC从token序列中识别出"语句" “表达式” “函数调用” 等语法单位的方法. 只要为JavaCC描述“语句” “表达式” “函数调用” ...
- HTML中include file的用法
语法 <!-- #include PathType = "FileName" --> 参数 PathType 路径类型 路径可为以下某种类型: 文件 该文件名是带有 ...
- 九、Sql Server 基础培训《进度9-复杂查询练习》(实际操作)
知识点: 复杂查询1:统计全校有多少个男生.有多少个女生? 写法1(分组): select sex as 性别,count(*) as 人数 from student group by sex 写法2 ...
- 三、Sql Server 基础培训《进度3-是否使用外键(知识点学习)》
学习作业3: 问题1:你觉得外键有哪些适用情况?哪些不适用情况? 问题2:本次实战案例,由你来架构,你觉得有必要建立外键吗? 说明你的理由? ======================= ...
- SVN版本管理系统的使用(CentOS+Subversion+Apache+Jsvnadmin+TortoiseSVN)
1.服务器: 192.168.4.221root 用 户操作安装 装 apache# yum install httpd httpd-devel# service httpd start# chkco ...
- eclipse中的快捷键的使用
- JavaScript---设计模式总结
写了两篇设计模式的东西后,感觉不是很完美,决定闭关修炼,同时写下笔记 重申:设计模式很有用! 这里列一个设计模式的目录防止漏了某个东西(未完成的没有链接) 单例模式 策略模式 代理模式 迭代器模式 发 ...
- jQuery 基本选择器 层次选择器 过滤选择器 内容过滤选择器 可见过滤选择器 属性过滤选择器 表单对象属性过滤选择器