【SSM_Mybatis】学习笔记02

本文介绍了Mybatis的基本架构,并通过实例详细讲解了如何配置和使用Mybatis,包括下载Mybatis、创建项目、数据库准备、主配置文件与映射文件的设置。通过ID查询用户和模糊查询用户展示了#{}与${}的区别。此外,还涉及到了使用log4j.properties进行日志查看以及如何添加和删除用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三、Mybatis架构图(图来自www.siki.com的学习资料)

四、mybatis官网 http://www.mybatis.org/mybatis-3/

1、下载Mybatis,创建项目、导包

 

2、准备数据库、测试用例

import java.util.Date;

/**
 * CREATE TABLE `user` (
  `u_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `u_username` varchar(64) NOT NULL COMMENT '用户名',
  `u_password` varchar(64) DEFAULT NULL COMMENT '用户密码',
  `u_sex` varchar(16) DEFAULT NULL COMMENT '用户性别',
  `u_createTime` datetime DEFAULT NULL COMMENT '用户创建时间',
  `u_cid` int(11) DEFAULT NULL COMMENT '用户国家id',)
 *
 */
public class User {
	private Integer u_id;
	private String u_username;
	private String u_password;
	private String u_sex;
	private Date u_createTime;
	private Integer u_cid;
}

3、主配置文件、映射文件

主配置文件,添加约束已经相关配置信息:

<?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>
	<!-- 在集成spring不用 -->
  <environments default="development">
    <environment id="development">
    <!-- 使用JDBC管理事务 -->
      <transactionManager type="JDBC"/>
      <!-- 使用连接池连接数据库 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql//localhost:3306/ssm_mybatis"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="mapper/UserMapper.xml"/>
  </mappers>
</configuration>

映射文件,添加约束:

<?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">

4、编写一个小用例,”通过ID查询用户“。

(1)新建HelloMyBatis

步骤: //读取配置文件,使用inputStream
            //需要SqlSessionFactoryBuilder
           //生产SqlSessionFactory
          //创建SqlSession
        //操作数据库

public class HelloMyBatis {

	//通过ID查询用户
	@Test
	public void test1() throws IOException {
		
		//读取配置文件,使用inputStream
		String resource = "SqlMapperConfig.xml";
	    InputStream in = Resources.getResourceAsStream(resource);
		//需要SqlSessionFactoryBuilder
		SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
		//生产SqlSessionFactory
		SqlSessionFactory ssf = ssfb.build(in);
		//创建SqlSession
		SqlSession sqlSession = ssf.openSession();
		//操作数据库
		//参数:一是操作的SQL语句,二是SQL语句的参数。
        User user = sqlSession.selectOne("UserMapper.selectUserById",1);
        System.out.println(user);
		
	}
    
}

(2)特别说明:这里利用Junit4测试,做法就是在方法前加上@Test注解。

(3)UserMapper.xml加上<mapper>SQL语句查询标签。

<mapper namespace="UserMapper">
	<select id="selectUserById" parameterType="Integer" resultType="com.dunka.mybatis.User">
		select * from user where u_id=#{id}
	</select>
</mapper>

注意:可以看到查询测例中的代码,用到了selectOne("这里是UserMapper.xml里的namespace+<mapper>的id",传进去的查询参数)

(4)最后附上,log4j.properties的代码,用于查看SQL查询中的DEBUG。

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

(5)结果:

附:中间出现了一个SQLException:no suitable driver for ......

结果是因为我的jbdc:mysql:那个语句写少了一个冒号。

5、编写另一个小用例,通过用户名模糊查找用户,利用LIST输出用户。

  //通过用户名模糊查找用户
		@Test
		public void test2() throws IOException {
			
			//读取配置文件,使用inputStream
			String resource = "SqlMapperConfig.xml";
		    InputStream in = Resources.getResourceAsStream(resource);
			//需要SqlSessionFactoryBuilder
			SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
			//生产SqlSessionFactory
			SqlSessionFactory ssf = ssfb.build(in);
			//创建SqlSession
			SqlSession sqlSession = ssf.openSession();
			//操作数据库
			//参数:一是操作的SQL语句,二是SQL语句的参数。
	        List<User> list = sqlSession.selectList("UserMapper.selectUserByName","王");
	        for (User user2 : list) {
				System.out.println(user2);
			}
			
		}
<select id="selectUserByName" parameterType="String" resultType="com.dunka.mybatis.User">
		select * from user where u_username like '%${value}%'
	</select>

结果:

两个例子,最主要的不同就是#{}占位符与 ${}字符串拼接的不同,两者可互相替换, #{}传递过来的值是‘字符串’

${}传递过来的是字符串中的数据;

接下来,同一个语句且可运行,看看两者的不同:

        select * from user where u_username like '%${value}%'
        select * from user where u_username like "%"#{name}"%"

其中,字符串拼接中的value这个属性是固定的,不能修改,否则会报错。

6、小例子,添加用户

                     User user = new User();
					user.setU_username("Dunka");
					user.setU_password("123456");
					user.setU_sex("女");
					user.setU_createTime(new Date());
					user.setU_cid(1);
					
					sqlSession.insert("insertUser", user);
					//因为前面配置文件,是用JDBC开启事务,事务需要提交事务
					//这里需要添加事务提交语句
					sqlSession.commit();
	<insert id="insertUser" parameterType="com.dunka.mybatis.User">
		insert into user values(null,#{u_username},#{u_password},#{u_sex},#{u_createTime},#{u_cid})
	</insert>

7、小栗子,通过id删除用户

//操作数据库
						sqlSession.delete("deleteUserById", 13);
						sqlSession.delete("deleteUserById", 14);
						sqlSession.delete("deleteUserById", 15);
						//因为前面配置文件,是用JDBC开启事务,事务需要提交事务
						//这里需要添加事务提交语句
						sqlSession.commit();
<!-- 通过id删除用户 -->
	<delete id="deleteUserById" parameterType="Integer">
		delete from user where u_id=#{u_id}
	</delete>

 

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多啦CCCC梦

你的鼓励将是我最大的创作动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值