SpringBoot+Mybatis xml版

项目结构:

发

application.properties

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=1993920ai

server.port=8081
#spring.http.encoding.force=true
#spring.http.encoding.charset=UTF-8
#spring.http.encoding.enabled=true
#server.tomcat.uri-encoding=UTF-8

实体类:

public class User implements Serializable{

     private int id;
     private String name;
     private String password;
}

配置类:

@ComponentScan("yiche.com")
@Configuration
@PropertySource("classpath:application.properties")
public class MyConfig {


    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;
     @Value("${spring.datasource.url}")
    private String url;
    @Value("${spring.datasource.username}")
    private String username;
    @Value("${spring.datasource.password}")
    private String password;


          /*
            如果没有上面的 也可以使用这个注解
            //覆盖默认数据源 使用druid数据源
            @ConfigurationProperties(prefix = "spring.datasource")

            */

     @Bean
     @Primary
    public DataSource dataSource(){
        DruidDataSource dataSource=new DruidDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;



    }



    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(){

        SqlSessionFactoryBean sqlFactory = new SqlSessionFactoryBean();
        try{
            sqlFactory.setDataSource(dataSource());
            //设置mybatis的主配置文件  记住是主配置文件啊
            ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            Resource mybatisXml = resolver.getResource("classpath:mybatis-config.xml");

            sqlFactory.setConfigLocation(mybatisXml);

            //设置mapper.xml文件的路径

            Resource[] resource2=resolver.getResources("classpath:yiche/com/mapper/*.xml");
            sqlFactory.setMapperLocations(resource2);

            //扫描实体类所在包
            sqlFactory.setTypeAliasesPackage("yiche.com.bean");
        }catch (Exception e){
            //e.printStackTrace();
        }
        return sqlFactory;

    }


/*
    @Bean
    public EmbeddedServletContainerFactory embeddedServletContainerFactory() {
        ConfigurableEmbeddedServletContainer factory = new TomcatEmbeddedServletContainerFactory();
        factory.setDocumentRoot(new File("D:\\WorkSpace\\SpringBoot_1\\src\\main\\webapp\\"));
        return (EmbeddedServletContainerFactory) factory;
    }*/



    //mapper接口扫描器  也可以使用注解@MapperScan(basePackages = "yiche.com.mapper") 替代如下
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer mapperScannerConfigurer=new MapperScannerConfigurer();
        //mapper接口所在的包
        mapperScannerConfigurer.setBasePackage("yiche.com.mapper");

        return mapperScannerConfigurer;
    }
}


// /*事务管理*/    //也可以不配置使用默认的
             @Bean
             public DataSourceTransactionManager getDataSourceTransactionManager1() {
                   return new DataSourceTransactionManager(dataSource());
             }

接口:定义增删改查的方法

@Repository
 public interface UserMapper1 {


       List<User> getAll();


       User getByName(String name);


       int delete(User user);


       int update(User user);


       int addUser(User user);


}

接口.xml文件
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="yiche.com.mapper.UserMapper1">


    <!-- 使用别名的目的是让查询结果属性名称和实体bean的属性名对应,要不让绑定不上数据。要么就写resultMap这个大家自己搞了 -->
    <select id="getByName" resultType="yiche.com.bean.User">
         select * from user where name=#{name}
    </select>


    <select id="getAll" resultType="yiche.com.bean.User">
        select *  from user
    </select>

    <insert id="addUser">
        insert into
        user
        <trim prefix="(" suffix=")" suffixOverrides=",">

            <if test="user.name != null and user.name!=''">
                name,
            </if>

            <if test="user.password != null and user.password!=''">
                password,
            </if>


        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="user.name != null and user.name!=''">
                #{name}, jdbcType=VARCHAR},
            </if>

            <if test="user.password != null and user.password !=''">
                #{password,jdbcType=VARCHAR},
            </if>

        </trim>
    </insert>


    <update id="update">
        update user
        <set>
            <if test="name!=null and name!=''">
                name=#{name},
            </if>

        </set>
        where id=#{id}
    </update>


    <delete id="delete" parameterType="Integer">
        delete from user where id=#{id}
    </delete>


</mapper>




Controller:

@Controller
public class UserController {

     @Autowired
     private UserDao userDao;


    @RequestMapping("/add")

    public String add(){

        User user=new User(12,"tom","123");
        userDao.addUser(user);

        return "success";
    }

    @RequestMapping("/delete")
    public String delete(){
        User user=new User(1,"tom","123");
        userDao.delete(user);
        return "success";
    }


    @RequestMapping("/getByName")
    @ResponseBody
  public String getByName(){

        System.out.println("ok");
        User user=userDao.getByName("tom");
        System.out.println(user);
        return "success";
    }

    @RequestMapping("/update")
    public String update(){
        User user=new User(2,"cc","123");
        userDao.update(user);
        return "success";
    }


    @RequestMapping("/getAll")
    @ResponseBody
    public String getAll(org.apache.coyote.Request request){
        List<User> users=userDao.getAll();
        request.setAttribute("user",users);
        System.out.println(users.size());
        return "list";
    }

}

Mybatis全局文件:

 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>
<!--
     <mappers>
         <mapper resource="classpath:yiche/com/mapper/UserMapper.xml"></mapper>
     </mappers>-->
</configuration>

pom.xml文件:

<parent>

        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
    </parent>

   <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>


        <!-- web容器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.6.RELEASE</version>
        </dependency>
        <!-- 需要单独引用不然会报  java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport -->

        <!-- spring jdbc支持, 不引用会报类似,具体类可能不同NoClassDefFoundError: org/springframework/jdbc/datasource/TransactionAwareDataSour -->


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.10.RELEASE</version>
        </dependency>

        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.0</version>
        </dependency>
        <!-- mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.40</version>
        </dependency>
        <!--日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- druid连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.18</version>
        </dependency>
        <!--
            &lt;!&ndash; 通用Mapper &ndash;&gt;
            <dependency>
              <groupId>com.github.abel533</groupId>
              <artifactId>mapper</artifactId>
              <version>2.3.4</version>
            </dependency>-->

        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.0</version>
        </dependency>





        <dependency>
            <groupId>com.github.iweinzierl</groupId>
            <artifactId>jsonformat</artifactId>
            <version>1.0</version>
        </dependency>

        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20131018</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>3.1.1.RELEASE</version>
            <scope>test</scope>
        </dependency>

         <!--SpringBoot测试类-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

猜你喜欢

转载自blog.csdn.net/didi7696/article/details/80179660
今日推荐