首页 > 其他分享 >Spring-xml(+注解)方式整合第三方的框架-mybatis

Spring-xml(+注解)方式整合第三方的框架-mybatis

时间:2024-02-03 17:11:22浏览次数:30  
标签:xml userDto name Spring phone mybatis password icon

1)不需要自定义命名空间:MyBatis

Spring整合Mybatis的步骤如下:

// 原始配置
<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.49</version>
</dependency>
<dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.10</version>
</dependency>
// mybatis配置文件
<?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>
    <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/dianping"/>
                <property name="username" value="root"/>
                <property name="password" value="123"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/springdemo/service/Mapper/userMapper.xml"/>
    </mappers>
</configuration>

// mapper配置文件
<?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.springdemo.service.Mapper.userMapper">
    <select id="getList" resultType="com.springdemo.service.pojo.userDto">
        select * from tb_user
    </select>
</mapper>

//测试
InputStream in = Resources.getResourceAsStream("MybatisConfigure.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = builder.build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
userMapper userMapper = sqlSession.getMapper(userMapper.class);
List<userDto> list = userMapper.getList();
for(userDto userDto:list){
     System.out.println(userDto.toString());
}

// 输出
userDto{id=1, phone='13686869696', nick_name='小鱼同学', password='', icon='/imgs/blogs/blog1.jpg'}
userDto{id=2, phone='13838411438', nick_name='可可今天不吃肉', password='', icon='/imgs/icons/kkjtbcr.jpg'}
userDto{id=4, phone='13456789011', nick_name='user_slxaxy2au9f3tanffaxr', password='', icon=''}
userDto{id=5, phone='13456789001', nick_name='可爱多', password='', icon='/imgs/icons/user5-icon.png'}

  导入Mybatis整个Spring的相关坐标;

  编写Mapper和Mapper.xml

  配置SqlSessionFactoryBean和MapperScannerConfigurer

  测试

// Spring整合Mybatis
// 主要配置SqlSessionFactory 和 MapperScannerConfigurer 生成usermapper对象交给spring管理
// 依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
// 不需要mybatis配置文件和配置扫描的mapper包,直接通过spring生成bean
  <bean id="userDao" class="com.springdemo.service.Impl.userDaoImpl">
<property name="usermapper" ref="userMapper"></property>
</bean>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/dianping"></property>
<property name="username" value="root"></property>
<property name="password" value="123"></property>
</bean>
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.springdemo.service.Mapper"></property>
</bean>
// 测试在userdao中注入usermapper对象 操作数据库输出
public class userDaoImpl implements userDao{
private userMapper usermapper;// 类中定义依赖对象
public void setUsermapper(userMapper usermapper) {// 配置设置方式,Spring将对象作为参数传给this对象
this.usermapper = usermapper;
}
@Override
public void show(){
List<userDto> list = usermapper.getList();
for(userDto userDto:list){
System.out.println(userDto.toString());
}
}
}
// 结果

userDto{id=1, phone='13686869696', nick_name='小鱼同学', password='', icon='/imgs/blogs/blog1.jpg'}
userDto{id=2, phone='13838411438', nick_name='可可今天不吃肉', password='', icon='/imgs/icons/kkjtbcr.jpg'}
userDto{id=4, phone='13456789011', nick_name='user_slxaxy2au9f3tanffaxr', password='', icon=''}
userDto{id=5, phone='13456789001', nick_name='可爱多', password='', icon='/imgs/icons/user5-icon.png'}

 

 

2)需要引入第三方框架命名空间:Dubbo 自定义命名空间 暂时先搁置

3.利用注解方式整合mybatis:标签替换为注解,配置文件替换为配置类

public class MybatisComponent {
    @Bean("dataSource")
    public DruidDataSource DataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/dianping");
        dataSource.setUsername("root");
        dataSource.setPassword("123");
        return dataSource;
    }
    @Bean
    public SqlSessionFactoryBean SqlSessionFactoryBean(@Autowired DruidDataSource dataSource){
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        return sqlSessionFactoryBean;
    }
}

@Configuration  // 标注当前类是一个配置类(代替配置文件) + @Component
//<context:component-scan base-package="com.springdemo.service"></context:component-scan>
@ComponentScan(basePackages = "com.springdemo.service") //basePackages 数组
//<context:property-placeholder location="classpath:test.properties"></context:property-placeholder>
@PropertySource(value = {"classpath:test.properties"}) // key-value 配置文件 数组
@MapperScan(value = {"com.springdemo.service.Mapper"})
@Import(MybatisComponent.class) // 将MybatisComponent类收纳到SpringConfig下,不需要配置@Component注解
public class SpringConfig {

}

@Mapper
public interface userMapper {
    List<userDto> getList();
}

// 测试
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
userDao usedao = (userDao) applicationContext.getBean(userDao.class);
System.out.println(usedao);
usedao.show();

// 结果

userDto{id=1, phone='13686869696', nick_name='小鱼同学', password='', icon='/imgs/blogs/blog1.jpg'}
userDto{id=2, phone='13838411438', nick_name='可可今天不吃肉', password='', icon='/imgs/icons/kkjtbcr.jpg'}
userDto{id=4, phone='13456789011', nick_name='user_slxaxy2au9f3tanffaxr', password='', icon=''}

 

标签:xml,userDto,name,Spring,phone,mybatis,password,icon
From: https://www.cnblogs.com/buyubing/p/18004206

相关文章

  • Spring Boot无需Dockerfile创建Docker镜像三种方法
    SpringBoot无需Dockerfile创建Docker镜像三种方法        随着技术的发展,服务于终端用户请求的应用程序的部署方式也发生了变化。传统上,你需要用一台机器来部署应用程序,然后决定机器的配置,以保证应用程序的运行。容器的引入,即把整个软件堆栈打包成一个单一的实体并进......
  • Spring-Boot框架配置YAML整合Redis代替properties文件------Spring-Boot框架
    packagecom.example.boot3.controller;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data.redis.core.StringRedisTemplate;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.we......
  • springboot多环境开发pofiles
    不同环境下,不同yml配置,分隔不同环境1.单文件使用 使用---分隔2.多文件使用由application.yml中指定使用 分组  组激活......
  • springboot属性配置
    启动jar包时,配置“属性”(端口......)1.命令行参数方式--键=值 2.环境变量方式  3.外部配置文件方式 优先级:项目yml<jar包目录下yml<环境变量<命令行参数......
  • SpringBoot项目支持https的nacos地址
    问题描述Causedby:sun.security.validator.ValidatorException:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget atsun.security.validator.PKIXValidator.doBuild(......
  • MyBatis查询功能演示
    准备工作①创建数据库&数据表##创建数据库CREATEDATABASE`dbtest1`;##创建数据表CREATETABLE`t_user`(`id`INTNOTNULLAUTO_INCREMENT,`username`VARCHAR(20)DEFAULTNULL,`password`VARCHAR(20)DEFAULTNULL,`age`INTDEFAULTNULL,`gender......
  • XmlDocument 解决 Clone、CloneNode、ImportNode 等节点克隆后的标签自闭合问题
    前言:这两天在对Taurus.Mvc 做html 加载性能优化时,发现存在这个问题。具体优化的是CYQ.Data 组件的XHtmlAction 相关类。问题过程:之前XmlDocument 调用 LoadXml(xml)之后,缓存对象,再次使用时,都是重新LoadXml:XmlDocumentnewDoc=newXmlDocument();......
  • SpringBoot 多模块开发 笔记(一)
    多模块开发简易版dao层也可以说是Mapper层web层将controller放在这一层还有统一返回类型和自定义异常也在放在这里启动类也放在这里model层也就是数据对象比如常见的User类server层业务逻辑层或者说service层更好创建步骤创建一个正常的Spr......
  • mybatisplus 数据批量插入 遇到错误该批次改为单条插入
    批量插入效率远大于单条数据插入,有事一批数据中有一条数据报错就会导致这一批次数据都插入失败,为了保证数据最大化的插入到数据库中,就需要批量转单条插入,单条插入中遇到错的数据跳过,保证其他数据正确的插入到数据库中。直接上代码1、实体类@TableName(value="yc_test_t")pu......
  • MyBatis获取参数值的两种方式
    MyBatis获取参数值的两种方式:${}和#{}${}的本质就是字符串拼接,#{}的本质就是占位符赋值。${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添......