Mybatis配置23事

本文详细介绍了Mybatis的配置方法,包括通过单纯的XML映射实现查询和使用接口方式配置Mybatis。在XML配置中涉及SqlMapperConfig.xml和Mapper.xml映射文件,而在接口配置中,重点解析了SqlConfig.xml的设置,并提供了接口类和测试用例的说明。

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

配置参考链接:Mybatis参考文献

1.通过单纯的xml映射实现查询

SqlMapperConfig.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">
<!-- 配置sql核心配置文件 -->
 <configuration>
    <environments default="test">
    	<environment id="test">
    		<transactionManager type="JDBC"/><!-- 使用jdbc事务 manager容器去管理,mybatis什么也不做 -->
               <dataSource type="POOLED"><!-- 数据源 unpooled 非池化 pooled JNDI方式 命名服务 -->
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/hr?characterEncoding=utf8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
    	</environment>
    </environments>
    <!-- 声明调用映射文件 -->
    <mappers>
    	<!-- 单个xml文件 -->
    	<mapper resource="com/feifan/UserMapper.xml"/><!-- 文件路径 -->
    </mappers>
</configuration>

Mapper.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.feifan"><!-- 在测试类中通过买命名空间+id 访问Sql语句 -->
	<select id="findlist" resultType="com.feifan.pojo.User">
		select * from emps
	</select>
	
	<insert id="insert" parameterType="com.feifan.pojo.User">
		insert into emps (fname,lname,email,tel)values("kk",null,null,null)
	</insert>
	
</mapper>

测试基础类BaseTest

/** 测试基础类*/
public class TestBase {

	//获取sqlsessionFactory 对象
	protected SqlSessionFactory sqlSessionFactory;//单例线程安全
	
	@Before//在测试方法Test之前执行
	public void init() throws Exception{
		String resource="sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);//读取配置文件
		sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);//获取工场对象
		System.out.println("获取到sqlsessionfactory对象"+sqlSessionFactory);
	}
	//Test之后执行
	@After
	public void close() {
		System.out.println("销毁单列对象"+sqlSessionFactory);
	}
}

测试类:

public class TestMain extends TestBase {
	
	@Test
	public void findList(){
		SqlSession openSession = sqlSessionFactory.openSession();//获取sqlsession对象
		String sql="com.feifan.findlist";//mapper.xml下要执行的语句id 命名空间+id
		List<User> selectList = openSession.selectList(sql);//执行查询语句
		for (User user : selectList) {
			System.out.println(user);
		}
	}
	//插入数据
	public void insert(){
		SqlSession openSession = sqlSessionFactory.openSession();//获取sqlsession对象
		String sql="com.feifan.insert";//mapper.xml下要执行的语句id 命名空间+id
		User user=new User();
		user.setFname("kkk");
		user.setLname("kkkk");
		user.setEmail("kkkk");
		user.setTel("09098");
		int i = openSession.insert(sql, user);//执行查询语句
		System.out.println(i);
	}
}

2.接口方式配置Mybatis

接口配置xml 实现查询SqlConfig.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">
    
<!-- 配置sql核心配置文件 -->
<configuration>
<!--  加载数据库属性文件-->
<properties resource="db.properties"></properties>
<!-- 设置驼峰映射规则 -->
<settings>
	<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 为类起别名 后面可以用别名调用 -->
<typeAliases>
    	<typeAlias type="com.feifan.User" alias="User"/>
    	<!-- 多个类别名采用包扫描方式,别名为类名 -->
		<package name=com.feifan/>
</typeAliases>
    <!-- 配置环境 事务 数据源 映射文件 -->
    <environments default="test">
    	<environment id="test">
    		<transactionManager type="JDBC"/><!-- 事务 JDBC(数据库自己处理)/MANAGE(meveanxici自行处理 -->
               <dataSource type="POOLED"><!-- 数据源 unpooled 非池化 pooled JNDI方式 -->
                    <property name="driver" value="${jdbcDriver}"/>
                    <property name="url" value="${jdbcUrl}"/>
                    <property name="username" value="${jdbcUser}"/>
                    <property name="password" value="${jdbcPassword}"/>
                </dataSource>
    	</environment>
    </environments>
    <!-- 声明调用映射文件 -->
    <mappers>
    	<!-- <mapper resource="com/feifan/dao/UserMapper.xml"/> xml 配置方式是路径-->
    	<mapper class="com.feifan.dao.UserMapper"/><!-- 接口文配置是类的全名 -->
    	<!-- 配置包扫描可以扫描多个接口 -->
    	<package name="com.feifan.dao"/>
    </mappers>
</configuration>

Mapper.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.feifan.dao.UserMapper"><!-- 接口的全路径 -->
	<sql id="cols">id,name,birthday,address</sql><!-- sql查询别名下面直接引用节省代码 -->
	
	<select id="find" resultType="com.feifan.User">
		<!-- select <include refid="cols"></include> from user -->
		select *from user
	</select>
	
	<!-- 查询所有,resultType返回值,标识返回类型List<> -->
	<select id="find1" resultType="User">
		select id,name,birthday,address from user
	</select>
	
	<!-- 只返回一个值,返回一个整数值  -->
	<select id="count" resultType="integer">
		SELECT COUNT(*) FROM user
	</select>
	
	<!-- 获取一个用户的信息(一条记录)#{id}参数,解析获取id值 -->
	<select id="get" parameterType="integer" resultType="User">
		SELECT * FROM USER WHERE id = #{id}	
	</select>
	
	<!-- 新增 -->
	<insert id="insert">
		INSERT INTO USER 
		(id,NAME,birthday,address)
		VALUES(6,'tony','2018-06-19','北京')
	</insert>
	
	<!-- 修改 -->
	<update id="update">
		UPDATE User
		SET NAME='tony' WHERE id=6
	</update>
	
	<!-- 删除 -->
	<delete id="delete" parameterType="integer">
		DELETE FROM User WHERE id=#{pid}
	</delete>
	
	<!-- 排序 -->
	<select id="orderby" parameterType="map"
		 resultType="User">
			SELECT * FROM User ${ob}
	</select>
</mapper>

接口类配置:

public interface UserMapper {
	List<User> find();//查找数据
	//名字需和mapper.xml文件中的id一样
	Integer insert();//增加数据
}

测试基类:

public class TestBase {
	
	protected SqlSessionFactory  SqlSessionFactory;//线程安全 单列
	@Before
	public void init() throws Exception{
		String resource="sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);//读取配置文件
		SqlSessionFactory = new SqlSessionFactoryBuilder().build(in);//获取工厂对象
		System.out.println(SqlSessionFactory);
	}
	
	@After
	public void close(){
		System.out.println("测试执行完毕"+SqlSessionFactory);
	}
}

测试类:

public class TestMain extends TestBase {

	//查询数据
	@Test
	public void test01() throws Exception{
		SqlSession openSession = SqlSessionFactory.openSession();//获取sqlsession对象
		UserMapper mapper = openSession.getMapper(com.feifan.dao.UserMapper.class);//获取接口对象
		System.out.println(mapper);
		List<User> findAll = mapper.find();//执行方法。
		for (User user : findAll) {
			System.out.println(user);
		}
	}
	
	//查询数据
	@Test
	public void test01_1() throws Exception{
		SqlSession openSession = SqlSessionFactory.openSession();//获取sqlsession对象,非线程安全
		List<User> selectList = openSession.selectList("com.feifan.dao.UserMapper.find");
		for (User user : selectList) {
			System.out.println(user);
		}
	}
	//增加数据
	@Test
	public void test02(){
		SqlSession openSession = SqlSessionFactory.openSession();//获取sqlsession对象,
		int i = openSession.insert("com.feifan.insert");//mapper.xml下要执行的语句id 命名空间+id
		System.out.println("增加数据"+i);//mybatis事务。默认不是自动提交所以需要手动提交
		openSession.commit();//手动提交事物
		
	}
}

其他动态sql注意事项:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值